Json解析

Posted SpringDragon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Json解析相关的知识,希望对你有一定的参考价值。

  在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());
	}
}

  

以上是关于Json解析的主要内容,如果未能解决你的问题,请参考以下文章

使用 json rereiver php mysql 在片段中填充列表视图

ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项

NodeJs GraphQL 片段解析器

不要在片段中显示列表视图项

Json解析工具类

Golang实践录:反射reflect的一些研究及代码汇总