在Json解析中,{}代表一个对象,[]代表一个数组
在U3D中使用Json解析,一般先在Assets中新建一个Plugin的文件夹,把Litjson的插件放入到里面,然后进行解析
实例代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;
public class Person{
public string name;
public int age;
public int score;
}
public class JsonTest : MonoBehaviour {
void Start () {
//parJson ();
//parJson2();
createJson();
}
//解析json
void parJson(){
string jsonStr = "{'name':'令狐冲','age':25,'score':92}";
//Person person = JsonUtility.FromJson<Person> (jsonStr);
//Debug.Log (person.name);
//Litjson解析
Person person = JsonMapper.ToObject<Person>(jsonStr);
Debug.Log (person.name);
jsonStr = "[{'name':'令狐冲','age':25,'score':92},{'name':'岳不群','age':48,'score':89}]";
Person[] persons = JsonMapper.ToObject<Person[]> (jsonStr);
foreach(Person p in persons){
Debug.Log (p.name);
}
}
void parJson2(){
string jsonStr = "[{'name':'令狐冲','age':25,'score':92},{'name':'岳不群','age':48,'score':89}]";
JsonData jd = JsonMapper.ToObject (jsonStr);
for(int i = 0; i < jd.Count; i++){
JsonData personJd = jd [i];
Debug.Log (personJd["name"]);
}
Debug.Log (jd[0]["age"]);
}
//生成json
void createJson(){
//方法一
Person person = new Person();
person.name = "令狐冲";
person.age = 25;
person.score = 92;
string jsonStr = JsonMapper.ToJson (person);
//Debug.Log (jsonStr);
//方法二
//[{'name':'令狐冲','age':25,'score':92},{'name':'岳不群','age':48,'score':89}]
JsonData jd = new JsonData();
//指定jsondata的类型
jd.SetJsonType (JsonType.Array);
string[] name = new string[]{ "令狐冲", "岳不群", "林平之"};
int[] age = new int[]{ 25, 48, 21 };
int[] score = new int[]{ 92, 89, 85 };
for(int i = 0; i < name.Length; i++){
//创建每个person
JsonData personJd = new JsonData();
personJd ["name"] = name [i];
personJd ["age"] = age [i];
personJd ["score"] = score [i];
jd.Add (personJd);
}
Debug.Log (jd.ToJson());
}
}