C#使用LitJson解析JSON的示例代码

作者:peiandsky 时间:2021-11-17 06:35:05 

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

如果曾经使用过Json,就会清楚Json可以分为两个部分:

1.  Json Object(A collection of name/value pairs)

2. JSON Array (An ordered list of values)

解析JSON的开源包非常多,在各种场合使用非常广泛,尤其长于网络传输。

本文介绍使用LitJson,并用C#语言来介绍使用JSON,可以在C#应用程序,web程序,还有Unity3d C#脚本中使用。

第一步:先去下载LitJson并导入当前的项目。

第二步:litJson的几个实例方式

1.使用JsonData来处理生成json:{"name":"peiandsky","age":28,"sex":"male"}


JsonData data = new JsonData();

data["name"] = "peiandsky";

data["age"] = 28;

data["sex"] ="male";

string json1= data.ToJson();

2.对象中嵌套对象:{"name":"peiandsky","info":{"sex":"male","age":28}}


JsonData data2 = new JsonData();

data2["name"] = "peiandsky";

data2["info"] = new JsonData();

data2["info"]["sex"] = "male";

data2["info"]["age"] = 28;

string json2 = data2.ToJson();

3. 将上述两种方式的Json解析到JsonData


JsonData jsonData2 = JsonMapper.ToObject(json2);
Debug.Log(jsonData2["name"] + "  " + data2["info"]["sex"]);

4.使用JsonMapper来处理Json


Player player = new Player();

player.name = "peiandsky";

player.age = 23;

player.sex = "male";

string json=JsonMapper.ToJson(player);

5. 解析4中的json


Player player2 = JsonMapper.ToObject<Player>(json);

6. 使用最原始的方式生成Json

将数组转换成json:["one","two","three","four"]


JsonWriter writer = new JsonWriter();

writer.WriteArrayStart();

writer.Write("one");

writer.Write("two");

writer.Write("three");

writer.Write("four");

writer.WriteArrayEnd();

将复合对象转换成json字符串:{"book":{"title":"android game!","author":"pei","bookdetail":{"pages":429,"about":null}}}


JsonWriter writer2 = new JsonWriter();

writer2.WriteObjectStart();

writer2.WritePropertyName("book");

writer2.WriteObjectStart();

writer2.WritePropertyName("title");

writer2.Write("android game!");

writer2.WritePropertyName("author");

writer2.Write("pei");

writer2.WritePropertyName("bookdetail");

writer2.WriteObjectStart();

writer2.WritePropertyName("pages");

writer2.Write(429);

writer2.WritePropertyName("about");

writer2.Write(null);

writer2.WriteObjectEnd();

writer2.WriteObjectEnd();

writer2.WriteObjectEnd();

Debug.Log(writer2.ToString());

这种方式非常不方便,不建议使用。 

在使用LitJson中,建议使用JsonData,JsonMapper来处理Json的编码和解析。


Person[] p_array = { p,p,p};

string json_array=JsonMapper.ToJson(p_array);

Debug.Log(json_array);

JsonData pa = JsonMapper.ToObject(json_array);

Debug.Log(pa.IsArray+"   "+pa.Count);

for (int i = 0; i < pa.Count;i++ )

{

Debug.Log(pa[i]["name"]+"-"+pa[i]["age"]+"-"+pa[i]["score"]+"-"+pa[i]["birth"]);

int age = int.Parse(pa[i]["age"].ToString());

Debug.Log(age);

}

来源:http://www.cnblogs.com/peiandsky/archive/2012/04/20/2459219.html

标签:c#,litjson
0
投稿

猜你喜欢

  • java获取系统路径字体、得到某个目录下的所有文件名、获取当前路径

    2023-11-29 14:39:23
  • Scala中的mkString的具体使用方法

    2023-11-16 00:18:18
  • Java基础入门总结之序列化和反序列化

    2023-02-19 03:29:10
  • C#用NPOI导出导入Excel帮助类

    2022-09-27 00:23:43
  • 操作xml,将xml数据显示到treeview的C#代码

    2023-01-02 19:56:48
  • Activiti开发环境的搭建过程详解

    2021-08-16 07:13:05
  • SpringBoot+hutool实现图片验证码

    2021-06-17 02:55:27
  • Java的Spring框架中AOP项目的一般配置和部署教程

    2021-07-26 16:49:25
  • 详解C#开发Android应用程序的流程

    2021-08-11 21:32:59
  • C#使用yield关键字让自定义集合实现foreach遍历的方法

    2022-07-21 11:44:28
  • Spring AOP实现接口请求记录到数据库的示例代码

    2023-08-15 19:14:05
  • java在linux本地执行shell命令的实现方法

    2023-11-14 02:31:33
  • Java超详细分析@Autowired原理

    2023-11-25 05:37:44
  • springboot 使用poi进行数据的导出过程详解

    2022-12-01 07:23:31
  • Java Web实现文件下载和乱码处理方法

    2022-03-14 20:28:38
  • 解决java启动时报线程占用报错:Exception in thread “Thread-14“ java.net.BindException: Address already in use: bind

    2021-07-05 04:26:23
  • IDEA社区版下载安装流程详解(小白篇)

    2021-11-13 12:37:18
  • 用Java连接sqlserver数据库时候几个jar包的区别分析

    2021-11-07 02:18:01
  • java编程实现优先队列的二叉堆代码分享

    2022-11-13 15:32:13
  • JAVA MyBatis入门学习过程记录

    2022-04-23 13:49:24
  • asp之家 软件编程 m.aspxhome.com