[Unity基础]json在unity中的使用

原文链接:http://www.xuanyusong.com/archives/1901

LitJSON的官网:http://lbv.github.io/litjson/


0.引用头文件

using LitJson;

1.解析json

public void ResolveJson()
	{
                 //定义的JSON字符串,注意JSON的格式
		 string str = @"
            {
                ""Name""     : ""yusong"",
                ""Age""      : 26,
                ""Birthday"" : ""1986-11-21"",
 				""Thumbnail"":[
				{
           			""Url"":    ""http://xuanyusong.com"",
           			""Height"": 256,
           			""Width"":  ""200""
				},
				{
           			""Url"":    ""http://baidu.com"",
           			""Height"": 1024,
           			""Width"":  ""500""
				}
 
				]
            }";
		//这里是解析,包括整形与字符串
		JsonData jd = JsonMapper.ToObject(str);
		Debug.Log("name = " + (string)jd["Name"]);
		Debug.Log("Age = " + (int)jd["Age"]);
		Debug.Log("Birthday = " + (string)jd["Birthday"]);
		JsonData jdItems = jd["Thumbnail"]; 
 
		for (int i = 0; i < jdItems.Count; i++)
		{
			Debug.Log("URL = " + jdItems[i]["Url"]);
			Debug.Log("Height = " + (int)jdItems[i]["Height"]);
        	Debug.Log("Width = " + jdItems[i]["Width"]);
		}
	}


运行结果:

[Unity基础]json在unity中的使用_第1张图片


2.合成json

public void MergerJson()
	{
		StringBuilder sb = new StringBuilder ();
        JsonWriter writer = new JsonWriter (sb);
 
        writer.WriteObjectStart ();
 
		writer.WritePropertyName ("Name");
        writer.Write ("yusong");
 
		writer.WritePropertyName ("Age");
        writer.Write (26);
 
		writer.WritePropertyName ("Girl");
 
		writer.WriteArrayStart ();
 
		writer.WriteObjectStart();
		writer.WritePropertyName("name");
        writer.Write("ruoruo");
        writer.WritePropertyName("age");
        writer.Write(24);
		writer.WriteObjectEnd ();
 
		writer.WriteObjectStart();
		writer.WritePropertyName("name");
        writer.Write("momo");
        writer.WritePropertyName("age");
        writer.Write(26);
		writer.WriteObjectEnd ();
 
		writer.WriteArrayEnd();
 
		writer.WriteObjectEnd ();
		Debug.Log(sb.ToString ());
 
		JsonData jd = JsonMapper.ToObject(sb.ToString ());
		Debug.Log("name = " + (string)jd["Name"]);
		Debug.Log("Age = " + (int)jd["Age"]);
		JsonData jdItems = jd["Girl"];
		for (int i = 0; i < jdItems.Count; i++)
		{
			Debug.Log("Girl name = " + jdItems[i]["name"]);
			Debug.Log("Girl age = " + (int)jdItems[i]["age"]);
		}
	}

运行结果:

[Unity基础]json在unity中的使用_第2张图片


注意

使用LitJson解析时,解析类时
  • 若包含Dictionary结构,则key的类型必须是string,而不能是int类型(如需表示id等),否则无法正确解析!
  • 若需要小数,要使用double类型,而不能使用float,可后期在代码里再显式转换为float类型。

LitJson是处理JSON的第三方库,下载地址:

http://yun.baidu.com/s/1kT24EJP?fid=580659586161463

你可能感兴趣的:(json)