存储和交换文本信息的语法。

JavaScript对象表示法


LitJson

LitJSON is a small and fast library for handling data in the JSON format. It is written in C# and is compatible with all .Net languages.

JSON是一个简单的,但功能强大的序列化数据格式。它定义了简单的类型,如布尔,数(int和float)和字符串,和几个数据结构:List和Dictionnary。

LitJson是用C #编写的,它的目的是要小,快速,易用。它使用了Mono框架。

语法

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

  1. 数据由逗号分隔
  2. 花括号保存对象
  3. 方括号保存数组

值的类型可以是:

  1. public enum JsonType
  2. {
  3. None,
  4. Object,
  5. Array,
  6. String,
  7. Int,
  8. Long,
  9. Double,
  10. Boolean
  11. }

举例:

  1. "firstName":"Shen", "lastName":"Jun"
  2. 名称和值之间用冒号分隔
  3. 多个变量之间用逗号分隔
  4. 结尾不需要添加分号

JSON 对象

JSON 数组

  1. JSON数组在方括号中书写,数组可包含多个对象:
  1. {
  2. "people": [
  3. { "firstName" : "Brett", "lastName" : "McLaughlin" },
  4. { "firstName" : "Jason", "lastName" : "Hunter" },
  5. { "firstName" : "Elliotte", "lastName" : "Harold" }
  6. ]

归纳小结

1、对象是属性、值对的集合。一个对象的开始于“{”,结束于“}”。每一个属性名和值间用“:”提示,属性间用“,”分隔。

2、数组是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。

3、值可以是引号里的字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。

5、JSON 提供了一种优秀的面向对象的方法,以便将元数据缓存到客户机上。


将 JSON 数据赋值给变量

例如,可以创建一个新的字符串变量,然后将 JSON 格式的数据字符串直接赋值给它:

  1. string str = @"
  2. {
  3. ""Name"":""shenjun"",
  4. ""Age"": 40,
  5. ""Birthday"" : ""1986-11-21"",
  6. ""Thumbnail"":
  7. {
  8. ""Url"": ""http://xuanyusong.com"",
  9. ""Height"": 256,
  10. ""Width"": ""200""
  11. },
  12. {
  13. ""Url"": ""http://baidu.com"",
  14. ""Height"": 1024,
  15. ""Width"": ""500""
  16. }
  17. ]
  18. }";

访问数据

使用JsonData,JsonMapper来处理Json的编码和解析

  1. void StreamWriteJson<T>(string path, T o)
  2. {
  3. using (FileStream fsWrite = File.Open (path, FileMode.OpenOrCreate)) {
  4. string json = JsonMapper.ToJson (o);
  5. byte[] buffer = System.Text.Encoding.UTF8.GetBytes (json);
  6. fsWrite.Write (buffer, 0, buffer.Length);
  7. }
  8. }
  9. T StreamReadJson<T>(string path)
  10. {
  11. using (FileStream fsReader = File.Open (path, FileMode.Open, FileAccess.Read)) {
  12. byte[] buffer = new byte[1024];
  13. int length;
  14. System.Text.StringBuilder sb = new System.Text.StringBuilder ();
  15. while ((length = fsReader.Read (buffer, 0, buffer.Length)) > 0) {
  16. string result = System.Text.Encoding.UTF8.GetString (buffer, 0, length);
  17. sb.Append (result);
  18. }
  19. T o = JsonMapper.ToObject<T> (s);
  20. return o;
  21. }

使用JsonWriter原始方式生成Json

  1. 将数组转换成json:["one","two","three","four"]
  2. JsonWriter writer = new JsonWriter();
  3. writer.WriteArrayStart();
  4. writer.Write("one");
  5. writer.Write("two");
  6. writer.Write("three");
  7. writer.Write("four");
  8. writer.WriteArrayEnd();

将复合对象转换成json字符串

  1. {"book":{"title":"android game!","author":"pei","bookdetail":{"pages":429,"about":null}}}
  2. JsonWriter writer2 = new JsonWriter();
  3. writer2.WriteObjectStart();
  4. writer2.WritePropertyName("book");
  5. writer2.WriteObjectStart();
  6. writer2.WritePropertyName("title");
  7. writer2.Write("android game!");
  8. writer2.WritePropertyName("author");
  9. writer2.Write("pei");
  10. writer2.WritePropertyName("bookdetail");
  11. writer2.WriteObjectStart();
  12. writer2.WritePropertyName("pages");
  13. writer2.Write(429);
  14. writer2.WritePropertyName("about");
  15. writer2.Write(null);
  16. writer2.WriteObjectEnd();
  17. writer2.WriteObjectEnd();
  18. writer2.WriteObjectEnd();
  19. Debug.Log(writer2.ToString());

文件的读写路径

JSON与XML

  1. 没有结束标签
  2. 更短
  3. 读写速度更快
  4. 使用数组

?