[原创]Json学习--litjson的生成和…

Json示例

1,json对象

{“name”:”张三”,”lv”:1,”job”:”法师”,”exp”:1.1}

2,复合json对象

{“name”:”李四”,”job”:{“lv”:2,”job”:”战士”,”exp”:2.2}}

3,json数组

[{“name”:”张三”,”lv”:1,”job”:”法师”,”exp”:1.1},{“name”:”李四”,”lv”:2,”job”:”战士”,”exp”:2.2}]

///这个就是Json文件里面的格式了。

///

2,生成json对象

Json.Writer writer=new JsonWriter();//创建json对象

writer.WriteObjectStart();//开始写对象

writer.WritePropertyName(“name”);//写入键

writer.Write(“张三”);//写入值

writer.WriteObjectEnd();//结束写入对象

生成对象

{“name”:”张三”}

所以要打印的话

String str=writer.ToString();

Debug.Log(str);

3,用LitJson生成json对象

JsonData data=new JsonData();

data[“name”]=”张三”;

data[“lv”]=1;

data[“job”]=”法师”;

data[“exp”]=1.1;

。。。生成json对象为。。。。

{“name”:”张三”,”lv”:1,”job”:”法师”,”exp”:1.1}

Mono例子:

using UnityEngine;using System.Collections.Generic;public class Gamemanager : MonoBehaviour { string strLitjson; void Start () { CreateLitjson(); }

Public void CreateLitjson(){

JsonData data=new JsonData();

data[name]=”张三”;

data[lv]=1;

data[job]=”法师”;

data[exp]=1.1;

strLitjson=data.ToJson();//说明litjson是输出字符串了

Debug.Log(strLitjson);

} }

//想要同样的效果用老Json

Public void CreateLitjson(){

writer.WriteObjectStart();//开始写对象

JsonWriter writer=new JsonWriter();

writer.WritePropertyName(“name”);

writer.Write(“张三”);

writer.WritePropertyName(“lv”);

writer.Write(1);

 

writer.WritePropertyName(“job”);

writer.Write(“法师”);

writer.WritePropertyName(“exp”);

writer.Write(1.1);

writer.WriteObjectEnd();

String json01=writer.ToString();

Debug.Log(json01);

二、生成复合json对象//

这个看明白了,前面不用看了生成下面的结果

{“name”:”李四”,”info”:{“lv”:2,”job”:,”战士”,”exp”:2.2}}

方法1,老json

 Void CreateJsonObject(){

JsonWriter writer=new JsonWriter ();

writer.WriteObjectStart();

writer.WritePropertyName(“name”);

writer.Write(“李四”);

writer.WritePropertyName(“info”);

writer.WriteObjectStart();

writer.WritePropertyName(“lv”);

writer.Write(2);

writer.WritePropertyName(“job”);

writer.Write(“战士”);

writer.WritePropertyName(“exp”);

writer.Write(2.2);

writer.WriteObjectEnd();

writer.WriteObjectEnd();//两个end

String strJson=writer.ToString();

}

//

方法2litjson方式

 Void CreateJsonObject(){

JsonData data=new JsonData();

data[“name”]=”李四”;

data[“info”]=new JsonData();

data[“info”][“lv”]=2;

data[“info”][“job”]=”战士”;

data[“info”][“exp”]=2.2;

String strJson=data.ToJson;//ToJson;

  /

  方法2复杂点的,生成json数组litjson方式


    void CreateLitjsonArray(){
        JsonData data=new JsonData();
        JsonData data1=new JsonData();
        data1["name"]="李四";
        data1 ["lv"] = 2;
        JsonData data2=new JsonData();
        data2["job"]="战士";
        data2 ["exp"] = 199.314;
        data.Add (data1);
        data.Add (data2);
        strLitjsonArray=data.ToJson();//说明litjson是输出字符串了
        Debug.Log(strLitjsonArray);

    }

 结果是:[{"name":"李四","lv":2},{"job":"战士","exp":199.314}]


/// 以上全部是创建json,下面是解析了。
/// 只解析litjson的例子,就解析上面这个最复杂的数组的例子

    string m_name;
    int lv;
    string job;
    float exp;       //首先要有变量接受对应的键值

void ParsingJsonArray(){
        JsonData data = JsonMapper.ToObject (strLitjsonArray);//
strLitjsonArray这个string要提前申明的
        m_name=data [0]["name"].ToString();
        lv=int.Parse(data[0] ["lv"].ToString());
        job=data [1]["job"].ToString();
        exp=float.Parse(data[1] ["exp"].ToString());
        Debug.Log ("name:"+m_name);
        Debug.Log ("lv:"+lv);
        Debug.Log ("job:"+job);
        Debug.Log ("exp:"+exp);
    }
结束:这样应该很清楚的知道用法了,还有litjson解析 中文的时候好像要乱码,网上有修改的dll,可以找找
 

 

 

你可能感兴趣的:(unity2d/3d)