您的位置:首页 > Web前端 > JavaScript

Json学习日记——对象与Json字符串的相互转化

2018-03-19 18:02 381 查看
在LitJson程序集中的JsonMapper中有一个静态方法 JsonMapper.ToJson(object)
可以将任何的对象转化为Json数据字符串

演示:单个对象转化为Json格式
我们先创建一个Person类,准备给Json转化用using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Person{
private string name;
private int age;
private string address;

public string Name
{
get
{
return name;
}

set
{
name = value;
}
}

public int Age
{
get
{
return age;
}
set
{
age = value;
}
}

public string Address
{
get
{
return address;
}
set
{
address = value;
}
}
public Person()
{

}

public Person(string name, int age, string address)
{
this.name = name;
this.age = age;
this.address = address;
}

public override string ToString()
{
return string.Format("姓名:{0} 年龄:{1} 地址:{2}", name,age,address);
}
}
然后!重点来了,要转化了 void Start () {
Person p1 = new Person("Mirror",20,"Chengdu");
string jsonStr = JsonMapper.ToJson(p1);
Debug.Log(jsonStr);
}
然后输出了这个{"Name":"Mirror","Age":20,"Address":"Chengdu"}就像之前我们学到的Json语法格式那个格式一样了!
演示:多个对象转化为Json格式

这次我们使用一个List集合来存储Person对象,搞三个Person放进去,然后转化成Json,打印输出瞧一瞧 void Start () {
personList = new List<Person>();

Person p1 = new Person("Mirror",20,"Chengdu");
Person p2 = new Person("Kite", 30, "Shenzhen");
Person p3 = new Person("Jack", 10, "Fulan");

personList.Add(p1);
personList.Add(p2);
personList.Add(p3);
string jsonStr = JsonMapper.ToJson(personList);
Debug.Log(jsonStr);
}输出结果为[{"Name":"Mirror","Age":20,"Address":"Chengdu"},{"Name":"Kite","Age":30,"Address":"Shenzhen"},{"Name":"Jack","Age":10,"Address":"Fulan"}]

Json格式的字符串转化为指定的泛型对象
JsonMapper.ToObject<T>(jsonStr)
代码演示:Json转单个对象
首先 Person p1 = new Person("Mirror", 20, "Chengdu");
string jsonStr = JsonMapper.ToJson(p1);
Person P = JsonMapper.ToObject<Person>(jsonStr);
Debug.Log(P.ToString());然后输出了姓名:Mirror 年龄:20 地址:20实例:Json转多个对象
JsonData data = JsonMapper.ToObject(jsonStr);
JsonData可以理解为一个数组
JsonData.Count表示这个Json中有几个元素
可以通过JsonData[i].ToJson()得到一个Json形式的String
于是就开始写代码了,我们还是用上面那个List集合并且创建一个新的List<Person> personListTwo来存储我们新解析出来的数据 private List<Person> personList;

private List<Person> personListTwo;

void Start () {
personList = new List<Person>();
personListTwo = new List<Person>();

Person p1 = new Person("Mirror", 20, "Chengdu");
Person p2 = new Person("Kite", 30, "Shenzhen");
Person p3 = new Person("Jack", 10, "Fulan");

personList.Add(p1);
personList.Add(p2);
personList.Add(p3);
string jsonStr = JsonMapper.ToJson(personList);
JsonData data = JsonMapper.ToObject(jsonStr);

for (int i = 0; i < data.Count; i++)
{
Person temp = JsonMapper.ToObject<Person>(data[i].ToJson());
personListTwo.Add(temp);
}

for (int i = 0; i < personListTwo.Count; i++)
{
Debug.Log( personListTwo[i].ToString());
}最后输出的结果是姓名:Mirror 年龄:20 地址:Chengdu
姓名:Kite 年龄:30 地址:Shenzhen
姓名:Jack 年龄:10 地址:Fulan
最后说一个方法
我们可以自己创建一个JsonData类的对象,去赋值然后转化为Json字符串 JsonData data = new JsonData();
data["WebName"] = "MirrorGame";
data["WebUrl"] = "MirrorGame.Com";
Debug.Log(data.ToJson());不过目前我所指似乎只能创建一个对象,如果后续我知道了多个的方法再来补
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: