C#操作json文件

Posted 工控码农Zero

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#操作json文件相关的知识,希望对你有一定的参考价值。


一、json配置

解析json文件,这里我们以litJson为例,首先应安装litjson

C#操作json文件

C#操作json文件

二、json简介(摘自百度百科)

JSON(javascript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

JSON 语法规则

JSON 语法是 JavaScript 对象表示语法的子集。

  • 数据在键值对中

  • 数据由逗号分隔

  • 花括号保存对象

  • 方括号保存数组

JSON 名称/值对

JSON 数据的书写格式是:名称/值对。

名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:

"firstName":"John"

这很容易理解,等价于这条 JavaScript 语句:

firstName="John"

JSON 值

JSON 值可以是:

  • 数字(整数或浮点数)

  • 字符串(在双引号中)

  • 逻辑值(true 或 false)

  • 数组(在方括号中)

  • 对象(在花括号中)

  • null

基础结构编辑

JSON[1]  结构有两种结构[2] 

json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构

1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。

2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

经过对象、数组2种结构就可以组合成复杂的数据结构了。

三、手写一个简单的json文件

[{"id":2,"name":"天下无双","demage":123},{"id":3,"name":"绝对零度","demage":200},{"id":4,"name":"冰封万里","demage":325}]

四、解析json文件

 创建一个对应的Skill类

class Skill { public int Id { get; set; } public string Name { get; set; } public int Demage { get; set; }
public override string ToString() { return "Id:" + Id + " Name:" + Name + " Demage:" + Demage; } }

解析文件

class Program { static void Main(string[] args) { List<Skill> skillList = new List<Skill>(); //右键引用,选择管理Nuget程序包,搜索litjson安装 JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("json.txt")); foreach (JsonData temp in jsonData) { Skill skill = new Skill(); JsonData idValue = temp["id"]; JsonData nameValue = temp["name"]; JsonData demageValue = temp["demage"]; int id = int.Parse(idValue.ToString()); string name = nameValue.ToString(); int demage = int.Parse(demageValue.ToString()); skill.Id = id; skill.Name = name; skill.Demage = demage; skillList.Add(skill); }
foreach (var s in skillList) { Console.WriteLine(s); } } }

五、使用泛型解析Json

注意:Skill类中的属性名应该和json文件中的键名相同

class Skill { public int id { get; set; } public string name { get; set; } public int demage { get; set; }
public override string ToString() { return "Id:" + id + " Name:" + name + " Demage:" + demage; } }

//使用泛型解析 Skill[] skillList = JsonMapper.ToObject<Skill[]>(File.ReadAllText("json.txt")); foreach (var item in skillList) { Console.WriteLine(item); }

长按 扫一扫

关注我

工控码农Zero


以上是关于C#操作json文件的主要内容,如果未能解决你的问题,请参考以下文章

VSCode 如何操作用户自定义代码片段(快捷键)

C#处理Json格式文件的源码演示

是否可以动态编译和执行 C# 代码片段?

C#程序员经常用到的10个实用代码片段

记录C#常用的代码片段

如何为 XSLT 代码片段配置 CruiseControl 的 C# 版本?