格式化显示JSON数据
测试JSON

{"took":1,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":2,"relation":"eq"},"max_score":1,"hits":[{"_index":"stu","_type":"_doc","_id":"1","_score":1,"_source":{"id":1,"name":"Student1","email":"11111@qq.com"}},{"_index":"stu","_type":"_doc","_id":"2","_score":1,"_source":{"id":2,"name":"Student2","email":"2222@qq.com"}}]},"aggregations":{"group_by_word_count":{"doc_count_error_upper_bound":0,"sum_other_doc_count":0,"buckets":[{"key":"Student1","doc_count":1},{"key":"Student2","doc_count":1}]}}}
想要实现的结果

{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 2,
"relation": "eq"
},
"max_score": 1,
"hits": [
{
"_index": "stu",
"_type": "_doc",
"_id": "1",
"_score": 1,
"_source": {
"id": 1,
"name": "Student1",
"email": "11111@qq.com"
}
},
{
"_index": "stu",
"_type": "_doc",
"_id": "2",
"_score": 1,
"_source": {
"id": 2,
"name": "Student2",
"email": "2222@qq.com"
}
}
]
},
"aggregations": {
"group_by_word_count": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "Student1",
"doc_count": 1
},
{
"key": "Student2",
"doc_count": 1
}
]
}
}
}
C# 后端的解决方案:
0X01.使用 Newtonsoft.Json
public static void Test1()
{
string filePath = "TestFile/TextFile1.txt";
if (File.Exists(filePath))
{
string jsonStr = File.ReadAllText(filePath);
JsonSerializer serializer = new JsonSerializer();
TextReader tr = new StringReader(jsonStr);
JsonTextReader jtr = new JsonTextReader(tr);
object obj = serializer.Deserialize(jtr);
if (obj != null)
{
StringWriter textWriter = new StringWriter();
JsonTextWriter jsonWriter = new JsonTextWriter(textWriter)
{
Formatting = Newtonsoft.Json.Formatting.Indented,//格式化缩进
Indentation = 4,//缩进字符数
IndentChar = ' '//缩进字符
};
serializer.Serialize(jsonWriter, obj);
string res = textWriter.ToString(); Console.WriteLine(res);
}
}
}
0X02.使用自定义 格式化排版
public static void Test3()
{
string filePath = "TestFile/TextFile1.txt";
if (File.Exists(filePath))
{
string jsonStr = File.ReadAllText(filePath); var obj = JsonHelper.JsonToObject<Dictionary<string,object>>(jsonStr);
string json = JsonHelper.ObjectToJson(obj);
Console.WriteLine(json);
}
} // 将序列化之后的 json 字符串进行格式化
public static string JsonFormat(string json)
{
int level = 0;
var jsonArr = json.ToArray();
StringBuilder jsonStr = new StringBuilder(1024);
string _nt = "\r\n"; for (int i = 0; i < json.Length; i++)
{
char c = jsonArr[i];
if (level > 0 && '\n' == jsonStr.ToString().ToArray()[jsonStr.Length - 1])
{
jsonStr.Append(TreeLevel(level));
}
switch (c)
{
case '[':
jsonStr.Append(c + _nt);
level++;
break;
case ',':
jsonStr.Append(c + _nt);
break;
case ':':
jsonStr.Append(c + " ");
break;
case ']':
level--;
jsonStr.Append(_nt);
jsonStr.Append(TreeLevel(level));
jsonStr.Append(c);
break;
case '{':
jsonStr.Append(c + _nt);
level++;
break;
case '}':
level--;
jsonStr.Append(_nt);
jsonStr.Append(TreeLevel(level));
jsonStr.Append(c);
break;
default:
jsonStr.Append(c);
break;
}
}
return jsonStr.ToString();
} // 设置缩进
private static string TreeLevel(int level)
{
string leaf = string.Empty;
for (int t = 0; t < level; t++)
{
leaf += " ";
}
return leaf;
}
以上示例 参照: https://www.cnblogs.com/Katakana/p/14268170.html
0X03.使用 System.Text.Json

using Common.JsonConverter;
using System.Text.Encodings.Web;
using System.Text.Json;
using System.Text.Json.Nodes; namespace Common
{
/// <summary>
/// json序列化,反序列化帮助类
/// </summary>
public class JsonHelper
{ private static readonly JsonSerializerOptions objectToJsonOptions; private static readonly JsonSerializerOptions jsonToObjectOptions; static JsonHelper()
{
objectToJsonOptions = new()
{
WriteIndented = true, //关闭默认转义
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, //启用驼峰格式
PropertyNamingPolicy = JsonNamingPolicy.CamelCase, };
objectToJsonOptions.Converters.Add(new DateTimeConverter());
objectToJsonOptions.Converters.Add(new DateTimeOffsetConverter());
objectToJsonOptions.Converters.Add(new LongConverter()); jsonToObjectOptions = new()
{
//启用大小写不敏感
PropertyNameCaseInsensitive = true
};
jsonToObjectOptions.Converters.Add(new DateTimeConverter());
jsonToObjectOptions.Converters.Add(new DateTimeOffsetConverter());
jsonToObjectOptions.Converters.Add(new LongConverter());
} /// <summary>
/// 通过 Key 获取 Value
/// </summary>
/// <returns></returns>
public static string GetValueByKey(string json, string key)
{
try
{
using JsonDocument doc = JsonDocument.Parse(json);
return doc.RootElement.GetProperty(key).ToString();
}
catch
{
return null;
}
} /// <summary>
/// 对象 转 Json
/// </summary>
/// <param name="obj">对象</param>
/// <returns>JSON格式的字符串</returns>
public static string ObjectToJson(object obj)
{
return System.Text.Json.JsonSerializer.Serialize(obj, objectToJsonOptions);
} /// <summary>
/// Json 转 对象
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="json">JSON文本</param>
/// <returns>指定类型的对象</returns>
public static T JsonToObject<T>(string json)
{
return System.Text.Json.JsonSerializer.Deserialize<T>(json, jsonToObjectOptions)!;
} /// <summary>
/// 没有 Key 的 Json 转 List
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
public static JsonNode JsonToArrayList(string json)
{
var jsonNode = JsonNode.Parse(json); return jsonNode;
} }
}
JsonHelper

using System.Text.Json;
using System.Text.Json.Serialization; namespace Common.JsonConverter
{
/// <summary>
/// 时间日期格式化
/// </summary>
public class DateTimeConverter : System.Text.Json.Serialization.JsonConverter<DateTime>
{ private readonly string formatString; /// <summary>
/// 时间日期格式化
/// </summary>
public DateTimeConverter()
{
formatString = "yyyy/MM/dd HH:mm:ss";
} /// <summary>
/// 时间日期格式化
/// </summary>
/// <param name="inFormatString"></param>
public DateTimeConverter(string inFormatString)
{
formatString = inFormatString;
} /// <summary>
/// 读
/// </summary>
/// <param name="reader"></param>
/// <param name="typeToConvert"></param>
/// <param name="options"></param>
/// <returns></returns>
public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (reader.TokenType == JsonTokenType.String)
{
if (DateTime.TryParse(reader.GetString(), out DateTime date))
{
return date;
}
}
return reader.GetDateTime();
} /// <summary>
/// 写
/// </summary>
/// <param name="writer"></param>
/// <param name="value"></param>
/// <param name="options"></param>
public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
{
writer.WriteStringValue(value.ToString(formatString));
}
} }
JsonConverter.DateTimeConverter

using System.Text.Json;
using System.Text.Json.Serialization; namespace Common.JsonConverter
{
/// <summary>
/// 带毫秒的时间格式化
/// </summary>
public class DateTimeOffsetConverter : System.Text.Json.Serialization.JsonConverter<DateTimeOffset>
{ private readonly string formatString; /// <summary>
///
/// </summary>
public DateTimeOffsetConverter()
{
formatString = "yyyy/MM/dd HH:mm:ss zzz";
} /// <summary>
/// 带毫秒的时间格式化
/// </summary>
/// <param name="inFormatString"></param>
public DateTimeOffsetConverter(string inFormatString)
{
formatString = inFormatString;
} /// <summary>
/// 读
/// </summary>
/// <param name="reader"></param>
/// <param name="typeToConvert"></param>
/// <param name="options"></param>
/// <returns></returns>
public override DateTimeOffset Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (reader.TokenType == JsonTokenType.String)
{
if (DateTimeOffset.TryParse(reader.GetString(), out DateTimeOffset date))
{
return date;
}
}
return reader.GetDateTimeOffset();
} /// <summary>
/// 写
/// </summary>
/// <param name="writer"></param>
/// <param name="value"></param>
/// <param name="options"></param>
public override void Write(Utf8JsonWriter writer, DateTimeOffset value, JsonSerializerOptions options)
{
writer.WriteStringValue(value.ToString(formatString));
}
} }
JsonConverter.DateTimeOffsetConverter

using System.Text.Json;
using System.Text.Json.Serialization; namespace Common.JsonConverter
{
/// <summary>
/// 长整型id格式化
/// </summary>
public class LongConverter : System.Text.Json.Serialization.JsonConverter<long>
{ /// <summary>
/// 读
/// </summary>
/// <param name="reader"></param>
/// <param name="typeToConvert"></param>
/// <param name="options"></param>
/// <returns></returns>
public override long Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (reader.TokenType == JsonTokenType.String)
{
if (long.TryParse(reader.GetString(), out long l))
{
return l;
}
}
return reader.GetInt64();
} /// <summary>
/// 写
/// </summary>
/// <param name="writer"></param>
/// <param name="value"></param>
/// <param name="options"></param>
public override void Write(Utf8JsonWriter writer, long value, JsonSerializerOptions options)
{
writer.WriteStringValue(value.ToString());
}
} }
JsonConverter.LongConverter

using System.Text.Json;
using System.Text.Json.Serialization; namespace Common.JsonConverter
{
/// <summary>
/// 可空对象序列化
/// </summary>
public class NullableStructConverterFactory : JsonConverterFactory
{
/// <summary>
/// 检查是否有值
/// </summary>
/// <param name="typeToConvert"></param>
/// <returns></returns>
public override bool CanConvert(Type typeToConvert)
{
if (typeToConvert.GetProperty("HasValue") != null)
{
return true;
}
return false;
} /// <summary>
/// 创建格式化设置
/// </summary>
/// <param name="typeToConvert"></param>
/// <param name="options"></param>
/// <returns></returns>
public override System.Text.Json.Serialization.JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options)
{
var converterType = typeof(NullableConverter<>).MakeGenericType(typeToConvert.GenericTypeArguments[0]);
return (System.Text.Json.Serialization.JsonConverter)Activator.CreateInstance(converterType)!;
} /// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
private class NullableConverter<T> : System.Text.Json.Serialization.JsonConverter<T?> where T : struct
{
/// <summary>
/// 读
/// </summary>
/// <param name="reader"></param>
/// <param name="typeToConvert"></param>
/// <param name="options"></param>
/// <returns></returns>
public override T? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (reader.TokenType == JsonTokenType.String)
{
if (string.IsNullOrEmpty(reader.GetString()) || string.IsNullOrWhiteSpace(reader.GetString()))
{
return null;
}
}
return System.Text.Json.JsonSerializer.Deserialize<T>(ref reader, options);
} /// <summary>
/// 写
/// </summary>
/// <param name="writer"></param>
/// <param name="value"></param>
/// <param name="options"></param>
public override void Write(Utf8JsonWriter writer, T? value, JsonSerializerOptions options)
{
var tempOptions = new JsonSerializerOptions(options); var thisFactory = new NullableStructConverterFactory().ToString();
tempOptions.Converters.Remove(options.Converters.FirstOrDefault(t => t.ToString() == thisFactory)!); System.Text.Json.JsonSerializer.Serialize(writer, value, tempOptions);
} }
}
}
JsonConverter.NullableStructConverterFactory
调用方式为:
public static void Test3()
{
string filePath = "TestFile/TextFile1.txt";
if (File.Exists(filePath))
{
string jsonStr = File.ReadAllText(filePath); var obj = JsonHelper.JsonToObject<Dictionary<string,object>>(jsonStr);
string json = JsonHelper.ObjectToJson(obj);
Console.WriteLine(json);
}
}
0X04.前端js 中格式化
先看样例,左侧输入json 源码, 点击 美化,生成 右边的html 格式化后的代码用于展示
下面是美化的带样式的高亮效果 ,以及 不带高亮的效果

直接上代码:

<template>
<div class="page-container">
<div class="flex-row">
<div class="left-content">
<div class="flex-row">
<div class="wrap">
<monaco-edito
ref="jsonOri"
height="400px"
language="html"
pmsg="json字符串"
:value="code_jsonOri"
width="750px"
/>
</div>
<div class="wrap">
<monaco-edito
ref="jsonNew"
height="400px"
language="html代码"
pmsg="html"
:value="code_jsonNew"
width="750px"
/>
</div>
</div>
</div>
</div>
<div class="flex-row">
<div class="right-content">
<button @click="beauClick">美化</button>
<button @click="clearClick">清空</button>
<!-- <button @click="formClick">格式化</button> -->
</div>
</div>
<div class="flex-row">
<div class="wrap">
<p style="background: #ffeebb">
<span style="color: rgb(154, 72, 192)">着色样式</span>
</p>
<div class="right-content">
<div
id="Canvas"
class="json_beautiful"
style="width: 750px"
v-html="code_beau_html"
></div>
</div>
</div>
<div class="wrap">
<p style="background: rgb(60, 228, 125)">
<span style="color: rgb(154, 72, 192)">默认样式</span>
</p>
<div class="right-content">
<div style="width: 750px" v-html="code_newHtml"></div>
</div>
</div>
</div>
</div>
</template> <script>
import MonacoEdito from '@/components/monacoEditor/index.vue' export default {
name: 'App',
components: {
MonacoEdito,
},
data() {
return {
tabkg: ' ',
code_jsonOri: ``,
code_jsonNew: '',
code_newHtml: '',
code_beau_html: '',
}
},
methods: {
runCode() {
// let json_ori = this.$refs.jsonOri.monacoEditor.getValue()
// let json_new = this.$refs.jsonNew.monacoEditor.getValue()
},
clearClick() {
this.code_jsonOri = ''
this.code_jsonNew = ''
this.code_newHtml = ''
this.code_beau_html = ''
this.$refs.jsonNew.monacoEditor.setValue('')
this.$refs.jsonOri.monacoEditor.setValue('')
},
beauClick() {
let html = ''
let json = this.$refs.jsonOri.monacoEditor.getValue()
try {
if (json == '') {
json = '""'
}
let obj = eval('[' + json + ']')
html = this.ProcessObject(obj[0], 0, false, false, false) if (
this.isNullOrEmpty(html) ||
html === '<span class=\'String\'>""</span>' ||
html.length <= 10
) {
console.log(1111)
this.code_beau_html = ''
this.code_newHtml = ''
this.$refs.jsonNew.monacoEditor.setValue('')
} else {
console.log(2222)
let showHtml = "<PRE class='CodeContainer'>" + html + '</PRE>'
this.code_beau_html = showHtml
this.code_newHtml = showHtml
this.$refs.jsonNew.monacoEditor.setValue(html)
}
} catch (e) {
alert('json语法错误,不能格式化。错误信息:\n' + e.message)
document.getElementById('Canvas').innerHTML = ''
}
},
formClick() {
let json = this.$refs.jsonOri.monacoEditor.getValue()
let res = this.formatJson(json)
this.$refs.jsonNew.monacoEditor.setValue(res)
},
formatJson(json, options) {
const _this = this
let reg = null,
formatted = '',
pad = 0,
PADDING = ' '
options = options || {}
options.newlineAfterColonIfBeforeBraceOrBracket =
options.newlineAfterColonIfBeforeBraceOrBracket === true
? true
: false
options.spaceAfterColon =
options.spaceAfterColon === false ? false : true
if (typeof json !== 'string') {
json = JSON.stringify(json)
} else {
json = JSON.parse(json)
json = JSON.stringify(json)
}
reg = /([\\{\\}])/g
json = json.replace(reg, '\r\n$1\r\n')
reg = /([\\[\]])/g
json = json.replace(reg, '\r\n$1\r\n')
reg = /(\\,)/g
json = json.replace(reg, '$1\r\n')
reg = /(\r\n\r\n)/g
json = json.replace(reg, '\r\n')
reg = /\r\n\\,/g
json = json.replace(reg, ',')
if (!options.newlineAfterColonIfBeforeBraceOrBracket) {
reg = /\\:\r\n\{/g
json = json.replace(reg, ':{')
reg = /\\:\r\n\[/g
json = json.replace(reg, ':[')
}
if (options.spaceAfterColon) {
reg = /\\:/g
json = json.replace(reg, ':')
}
json.split('\r\n').forEach(function (node, index) {
//console.log(node);
_this.ignorLog(index)
let i = 0,
indent = 0,
padding = '' if (node.match(/\{$/) || node.match(/\[$/)) {
indent = 1
} else if (node.match(/\}/) || node.match(/\]/)) {
if (pad !== 0) {
pad -= 1
}
} else {
indent = 0
} for (i = 0; i < pad; i++) {
padding += PADDING
} formatted += padding + node + '\r\n'
pad += indent
})
return formatted
},
ProcessObject(obj, indent, addComma, isArray, isPropertyContent) {
let html = ''
let comma = addComma ? "<span class='Comma'>,</span> " : ''
let type = typeof obj
if (this.IsArray(obj)) {
if (obj.length == 0) {
html += this.GetRow(
indent,
"<span class='ArrayBrace'>[ ]</span>" + comma,
isPropertyContent
)
} else {
html += this.GetRow(
indent,
"<span class='ArrayBrace'>[</span>",
isPropertyContent
)
for (let i = 0; i < obj.length; i++) {
html += this.ProcessObject(
obj[i],
indent + 1,
i < obj.length - 1,
true,
false
)
}
html += this.GetRow(
indent,
"<span class='ArrayBrace'>]</span>" + comma
)
}
} else {
if (type == 'object' && obj == null) {
html += this.FormatLiteral(
'null',
'',
comma,
indent,
isArray,
'Null'
)
} else {
if (type == 'object') {
let numProps = 0
for (let k in obj) {
this.ignorLog(k)
numProps++
}
if (numProps == 0) {
html += this.GetRow(
indent,
"<span class='ObjectBrace'>{ }</span>" + comma,
isPropertyContent
)
} else {
html += this.GetRow(
indent,
"<span class='ObjectBrace'>{</span>",
isPropertyContent
)
let j = 0
for (let prop in obj) {
html += this.GetRow(
indent + 1,
'<span class="PropertyName">"' +
prop +
'"</span>: ' +
this.ProcessObject(
obj[prop],
indent + 1,
++j < numProps,
false,
true
)
)
}
html += this.GetRow(
indent,
"<span class='ObjectBrace'>}</span>" + comma
)
}
} else {
if (type == 'number') {
html += this.FormatLiteral(
obj,
'',
comma,
indent,
isArray,
'Number'
)
} else {
if (type == 'boolean') {
html += this.FormatLiteral(
obj,
'',
comma,
indent,
isArray,
'Boolean'
)
} else {
if (type == 'function') {
obj = this.FormatFunction(indent, obj)
html += this.FormatLiteral(
obj,
'',
comma,
indent,
isArray,
'Function'
)
} else {
if (type == 'undefined') {
html += this.FormatLiteral(
'undefined',
'',
comma,
indent,
isArray,
'Null'
)
} else {
html += this.FormatLiteral(
obj,
'"',
comma,
indent,
isArray,
'String'
)
}
}
}
}
}
}
}
return html
},
FormatLiteral(literal, quote, comma, indent, isArray, style) {
if (typeof literal == 'string') {
literal = literal.split('<').join('<').split('>').join('>')
}
let str =
"<span class='" +
style +
"'>" +
quote +
literal +
quote +
comma +
'</span>'
if (isArray) {
str = this.GetRow(indent, str)
}
return str
},
FormatFunction(indent, obj) {
let tabs = ''
for (let i = 0; i < indent; i++) {
tabs += this.tabkg
}
let funcStrArray = obj.toString().split('\n')
let str = ''
for (let i = 0; i < funcStrArray.length; i++) {
str += (i == 0 ? '' : tabs) + funcStrArray[i] + '\n'
}
return str
},
GetRow(indent, data, isPropertyContent) {
let tabs = ''
for (let i = 0; i < indent && !isPropertyContent; i++) {
tabs += this.tabkg
}
if (
data != null &&
data.length > 0 &&
data.charAt(data.length - 1) != '\n'
) {
data = data + '\n'
}
return tabs + data
},
},
}
</script>
<style lang="scss">
.json_beautiful {
pre {
font-family: 'consolas';
color: rgb(60, 228, 125);
}
.Canvas {
font: 14px/18px 'consolas';
background-color: #db2727;
color: #000000;
border: solid 1px #cecece;
} .ObjectBrace {
color: #00aa00;
font-weight: bold;
} .ArrayBrace {
color: #0033ff;
font-weight: bold;
} .PropertyName {
color: #cc0000;
font-weight: bold;
} .String {
color: #007777;
} .Number {
color: #aa00aa;
} .Boolean {
color: #0000ff;
} .Function {
color: #aa6633;
text-decoration: italic;
} .Null {
color: #0000ff;
} .Comma {
color: #000000;
font-weight: bold;
} PRE.CodeContainer {
margin-top: 0px;
margin-bottom: 0px;
}
}
</style>
<style scoped>
* {
padding: 0;
margin: 0;
} .flex-row {
display: flex;
flex-direction: row;
} .result {
/* width: 100%;
height: 100%; */
border: 1px solid #ccc;
width: 100%;
height: 500px;
} .left-content {
width: 1000px;
} .right-content {
margin-left: 15px;
padding: 10px;
width: 100%;
/* background: red; */
} .wrap {
display: flex;
flex-direction: column;
} .wrap p {
padding: 5px;
text-align: center;
font-size: 18px;
font-weight: bold;
color: #fff;
} .right-content p {
margin: 5px 0;
} button {
display: inline-block;
line-height: 1;
white-space: nowrap;
cursor: pointer;
background: #409eff;
border: 1px solid #409eff;
color: #ffffff;
text-align: center;
box-sizing: border-box;
outline: none;
margin: 0;
transition: 0.1s;
font-weight: 500;
padding: 12px 20px;
font-size: 14px;
border-radius: 4px;
}
</style>
Vue JSON美化
本文涉及到的源码: 见附件 点击下载
格式化显示JSON数据的更多相关文章
- 【转】让浏览器格式化显示JSON数据之chrome jsonView插件安装
jsonView 用来让Chrome浏览器能格式化的显示JSON数据. 以上是网上找的方式,且试验成功! 步骤: 1.打开 https://github.com : 2.搜索 jsonView 链接: ...
- jQuery格式化显示json数据
一.概述 JSONView 在gitlab上面,有一个jQuery JSONView插件,地址为:https://github.com/yesmeck/jquery-jsonview demo地址:h ...
- vue格式化显示json数据
已经是json格式数据的,直接用标签 <pre></pre>展示. 参考:https://www.jianshu.com/p/d98f58267e40
- WPF:使用Json.NET在TreeView中树形显示JSON数据
原文 WPF:使用Json.NET在TreeView中树形显示JSON数据 据 读者可以参考这个开源的可以树形显示XML和JSON的工具: Mgen Object 603:XML/JSON树形显示小工 ...
- 飘逸的python - 命令行漂亮的显示json数据
之前做的一个脚本把信息用json格式存到文本中.这样的好处是简便,易编辑,并且拥有强大的表达能力. 不过从文本cat出来的是一堆很难看的字符串,没换行和缩进.这时候就在想,如果有个类似于IDE的格式化 ...
- Python格式化处理json数据的方式
1.问题 在遇到json数据的过程中,我们经常需要获取json数据中某个值的操作,如果是用get方法去取比较繁琐,接下来介绍两种方式来取值. 2.jsonpath来格式化处理json数据 2.1介绍 ...
- table显示json数据传递
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- vue项目中使用插件将字符串装化为格式化的json数据(可伸缩)
插件地址:https://www.npmjs.com/package/vue-json-viewer 第一步:安装vue-json-viewer插件 $ npm install vue-json-vi ...
- C# 使用Newtonsoft.Json.dll 格式化显示Json串
private string ConvertJsonString(string str) { //格式化json字符串 JsonSerializer serializer = new JsonSeri ...
- easyui的datagrid为何无法显示json数据
因为easyui的datagrid要求数据JSON必须是如下格式:{"total":0,"rows":[]}其中total表示总的数据行数,rows是当前页的数 ...
随机推荐
- 11.IO 流
1.IO 流引入 概述:以应用程序为参照物,读取数据为输入流(Input),写数据为输出流(Output),大量输入输出数据简称 IO 流 原理: 2.IO 流的分类 读写的文件分类 二进制文件:打开 ...
- 05 elasticsearch学习笔记-基本CRUD
目录 视频教程 4.1 基本CRUD 4.2 URI查询 按时间段查 视频教程 Elasticsearch(7.8.1)沥血之作(包含仿百度搜索案例) https://www.bilibili.com ...
- SQL使用ROW_NUMBER() OVER函数自动生成序列号
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) 简单的说ROW_NUMBER()从1开始,为每一条分组记录返回一个数字,这里的ROW ...
- 前端使用 Konva 实现可视化设计器(10)- 对齐线
请大家动动小手,给我一个免费的 Star 吧~ 大家如果发现了 Bug,欢迎来提 Issue 哟~ github源码 gitee源码 示例地址 不知不觉来到第 10 章了,感觉接近尾声了... 对齐线 ...
- 泊松盘采样(Poisson Disk Sampling)生成均匀随机点
当需要生成随机点且要求随机点自然均匀的分布时,使用泊松盘采样就较为适合. 但该方法与统计学上的概念关联不大,这个只相当于点在面积上服从泊松分布, 而实现这个结果有很多做法. 最终效果: 圆形为含半径的 ...
- 前端 PM 分享:PM 需要做的事情
个人经验分享 PM PM( Project Manager ) PM( Product Manager ) 一.什么情况下需要前端担任 PM? 在我之前遇到的项目中,大多数项目的 PM 是由后端/产品 ...
- C语言:冒泡排序---详细解释
//冒泡排序数字,仅仅适用于数组无序的时候,若有序则不能使用冒号排序 例如: 数字组:5,54,64,98,47 /* 1: 54,64,98,47,5 4次 ...
- C 语言编程 — 输入/输出与文件操作
目录 文章目录 目录 前文列表 输入/输出 scanf() 和 printf() getchar() 和 putchar() 文件操作 打开文件 关闭文件 写入文件 读取文件 二进制 I/O 函数 前 ...
- Istio(一):服务网格和 Istio 概述
目录 一.模块概览 二.微服务架构 三.服务网格概述 3.1 服务网格概述 3.2 为什么需要服务网格? 四.istio简介 4.1 Istio 简介 4.2 流量管理 4.3 可观察性 4.4 安全 ...
- 【终极指南】使用Python可视化分析文本情感倾向
本文分享自华为云社区<Python理解文本情感倾向的终极指南>,作者: 柠檬味拥抱. 情感分析是一种通过自然语言处理技术来识别.提取和量化文本中的情感倾向的方法.Python在这一领域有着 ...