测试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>
&nbsp; &nbsp;
<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数据的更多相关文章

  1. 【转】让浏览器格式化显示JSON数据之chrome jsonView插件安装

    jsonView 用来让Chrome浏览器能格式化的显示JSON数据. 以上是网上找的方式,且试验成功! 步骤: 1.打开 https://github.com : 2.搜索 jsonView 链接: ...

  2. jQuery格式化显示json数据

    一.概述 JSONView 在gitlab上面,有一个jQuery JSONView插件,地址为:https://github.com/yesmeck/jquery-jsonview demo地址:h ...

  3. vue格式化显示json数据

    已经是json格式数据的,直接用标签 <pre></pre>展示. 参考:https://www.jianshu.com/p/d98f58267e40

  4. WPF:使用Json.NET在TreeView中树形显示JSON数据

    原文 WPF:使用Json.NET在TreeView中树形显示JSON数据 据 读者可以参考这个开源的可以树形显示XML和JSON的工具: Mgen Object 603:XML/JSON树形显示小工 ...

  5. 飘逸的python - 命令行漂亮的显示json数据

    之前做的一个脚本把信息用json格式存到文本中.这样的好处是简便,易编辑,并且拥有强大的表达能力. 不过从文本cat出来的是一堆很难看的字符串,没换行和缩进.这时候就在想,如果有个类似于IDE的格式化 ...

  6. Python格式化处理json数据的方式

    1.问题 在遇到json数据的过程中,我们经常需要获取json数据中某个值的操作,如果是用get方法去取比较繁琐,接下来介绍两种方式来取值. 2.jsonpath来格式化处理json数据 2.1介绍 ...

  7. table显示json数据传递

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. vue项目中使用插件将字符串装化为格式化的json数据(可伸缩)

    插件地址:https://www.npmjs.com/package/vue-json-viewer 第一步:安装vue-json-viewer插件 $ npm install vue-json-vi ...

  9. C# 使用Newtonsoft.Json.dll 格式化显示Json串

    private string ConvertJsonString(string str) { //格式化json字符串 JsonSerializer serializer = new JsonSeri ...

  10. easyui的datagrid为何无法显示json数据

    因为easyui的datagrid要求数据JSON必须是如下格式:{"total":0,"rows":[]}其中total表示总的数据行数,rows是当前页的数 ...

随机推荐

  1. 《深度学习原理与Pytorch实战》(第二版)

    第1章 深度学习简介 深度学习--利用深度人工神经网络来进行自动分类.预测和学习的技术,深度学习=深度人工神经网络 超过三层的神经网络都可以叫做深度神经网络 人工神经网络的关键算法--反向传播算法 深 ...

  2. 【GUI软件】小红书搜索结果批量采集,支持多个关键词同时抓取!

    目录 一.背景介绍 1.1 爬取目标 1.2 演示视频 1.3 软件说明 二.代码讲解 2.1 爬虫采集模块 2.2 软件界面模块 2.3 日志模块 三.获取源码及软件 一.背景介绍 1.1 爬取目标 ...

  3. 网络安全—SSL安全访问应用

    文章目录 网络拓扑 部署CA服务器颁发证书 开启Web服务 安装IIS服务 修改Web默认网页 申请Web证书 前提准备 申请文件生成 申请web证书 开始安装web证书 客户机访问web默认网站 使 ...

  4. pip install 报错:Versioning for this project requires either an sdist tarball, ...

    问题:Versioning for this project requires either an sdist tarball, or access to an upstream git reposi ...

  5. AIRIOT物联网低代码平台如何配置Modbus RTU协议?

    MBRTU即MODBUS RTU的简称,MODBUS是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信.平台的MBRTU协议是建立在TCP协议之上的 ...

  6. openstack虚拟机用keep alive添加的VIP,其它机器无法访问

    neutron port-list |grep ipneutron port-update a7fbxxf6cc2 --allowed_address_pairs type=dict list=tru ...

  7. 添加身份认证和鉴权方案-使用jwtbearer

    HTTP身份认证框架 RFC 7235 定义了一个 HTTP 身份验证框架,服务器可以用来质询(challenge)客户端的请求,客户端则可以提供身份验证凭据. 服务端开启了身份认证后.如果客户端访问 ...

  8. EDP .Net开发框架--WebApi

    平台下载地址:https://gitee.com/alwaysinsist/edp 按分类管理EDP所提供的WebApi接口,以供其他应用调用.WebApi接口不仅可以进行访问控制管理,同时还提供了版 ...

  9. [第一届长城杯]-ez-python

    ----这道题似曾相识,和某刃的题目不能说不同,简直就一摸一样 ----考点:pickle序列化问题,命令执行 ----正常访问网站,源代码F12给出?pic=的提示,这种大致一看就是可以任意文件访问 ...

  10. MySQL所有的主从同步架构搭建方式

    目录 一.前言 二.关于MySQL主从同步 三.部署规划 3.1 服务器规划 3.2 数据库目录规划 四.准备工具 五.四台机器上使用通用二进制包安装MySQL(以node7为例) 5.1 上传MyS ...