在这里插入图片描述

JSON的历史

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它在web开发和数据传输中得到广泛应用。以下是JSON的历史概述:

  1. 在1999年,由Douglas Crockford提出了JSON的基本概念和语法规则。JSON是一种基于JavaScript的简洁、易于阅读和编写的数据交换格式。

  2. JSON的设计灵感来自于JavaScript的对象字面量表示法和JavaScript语言规范中的一些取值规则。

  3. 2001年,对JSON的使用进行了规范化。RFC 7159正式定义了JSON的语法和数据格式,使其成为一种独立的数据交换格式,并得到了广泛的应用和支持。

  4. JSON由于其简洁性、易读性和跨平台的特点,逐渐成为互联网应用中首选的数据交换格式。

  5. 在各种编程语言和框架中,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);

}

难缠的干扰项

属性名或属性值中有符号:{ } [ ];

这样的比较难处理,暂时没想到办法。

如果你有好办法,请留言告诉我,谢谢。

关注我,不迷路,共学习,同进步

关注我,不迷路,同学习,同进步

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 2 个月前
8c391e04 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐