json转换遇到的问题
JSON的历史
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它在web开发和数据传输中得到广泛应用。以下是JSON的历史概述:
-
在1999年,由Douglas Crockford提出了JSON的基本概念和语法规则。JSON是一种基于JavaScript的简洁、易于阅读和编写的数据交换格式。
-
JSON的设计灵感来自于JavaScript的对象字面量表示法和JavaScript语言规范中的一些取值规则。
-
2001年,对JSON的使用进行了规范化。RFC 7159正式定义了JSON的语法和数据格式,使其成为一种独立的数据交换格式,并得到了广泛的应用和支持。
-
JSON由于其简洁性、易读性和跨平台的特点,逐渐成为互联网应用中首选的数据交换格式。
-
在各种编程语言和框架中,JSON的解析器和序列化器得到了广泛开发和支持,使得开发人员能够方便地将数据转换为JSON格式进行传输和存储。
JSON作为一种简洁、易于使用和跨平台的数据交换格式,在web开发和数据传输中扮演着重要的角色,并逐渐成为事实上的行业标准。
JSON常规转换
在C#中,可以使用Json.NET(也称为Newtonsoft.Json)库来读取和处理JSON文件。以下是一个简单的示例,演示如何读取JSON文件:
首先,需要在项目中安装并引用Json.NET库。您可以在NuGet包管理器中搜索和安装 “Newtonsoft.Json”。
假设有一个名为 “data.json” 的JSON文件,内容如下:
{
"name": "John",
"age": 30,
"city": "New York"
}
然后可以使用以下代码来读取并解析JSON文件:
using System;
using Newtonsoft.Json;
class Program
{
static void Main()
{
// 读取JSON文件内容
string json = System.IO.File.ReadAllText("data.json");
// 解析JSON文件
Person person = JsonConvert.DeserializeObject<Person>(json);
// 输出解析结果
Console.WriteLine($"Name: {person.Name}");
Console.WriteLine($"Age: {person.Age}");
Console.WriteLine($"City: {person.City}");
}
}
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
}
上述代码中,首先使用 File.ReadAllText
方法来读取JSON文件的内容,并将其存储在一个字符串变量 json
中。
然后,使用 JsonConvert.DeserializeObject
方法将JSON内容转换为C#对象。为了使JSON与C#对象之间正确映射,定义了一个名为 Person
的类,并使用属性来表示JSON中的字段。
最后,通过访问 Person
对象的属性来输出解析结果。
运行以上代码将会得到:
Name: John
Age: 30
City: New York
表示成功读取并解析了JSON文件中的内容。注意,需要根据具体的JSON文件结构定义相应的C#类。
干扰项之“\”反斜杠
将字符串中的反斜杠(\)替换为空格,可以按照以下方式操作:
string originalString = "Hello\World";
string replacedString = originalString.Replace("\\", " ");
Console.WriteLine(replacedString);
需要注意的是,由于反斜杠(\)在字符串中被用作转义字符,因此在代码中表示反斜杠时需要使用两个连续的反斜杠(\)。这样,字符串中的反斜杠才会被正确识别并进行替换。
干扰项之 [ 和 ]
这里主要表现在保留数组符号
int startIndex = inputString.IndexOf("[");
int endIndex = inputString.IndexOf("]");
if (startIndex >= 0 && endIndex >= 0 && endIndex > startIndex)
{
string extractedString = inputString.Substring(startIndex, endIndex - startIndex + 1);
//Console.WriteLine(extractedString);
Person[] persons = JsonConvert.DeserializeObject<Person[]>(extractedString);
Console.WriteLine(persons.Length);
}
整体代码
string jsonStr =System.IO.File.ReadAllText(@"C:\Users\meinv\Desktop\工作日志\12\ss.json");
string inputString = jsonStr.Replace("\\", "");//去斜杠
inputString = inputString.Replace("\r", "");//去斜杠
inputString = inputString.Replace("\t", "");//去斜杠
int startIndex = inputString.IndexOf("[");
int endIndex = inputString.IndexOf("]");
if (startIndex >= 0 && endIndex >= 0 && endIndex > startIndex)
{
string extractedString = inputString.Substring(startIndex, endIndex - startIndex + 1);
//Console.WriteLine(extractedString);
Person[] persons = JsonConvert.DeserializeObject<Person[]>(extractedString);
Console.WriteLine(persons.Length);
}
难缠的干扰项
属性名或属性值中有符号:{ } [ ];
这样的比较难处理,暂时没想到办法。
如果你有好办法,请留言告诉我,谢谢。
关注我,不迷路,共学习,同进步
更多推荐
所有评论(0)