Unity5.x 解析Json

   本章内容是从API接口请求Json,将其保存在本地,并且从本地读取解析。

   废话不多说,直接上干货,我选取的示例接口是一个查询电话号码归属地的功能。

首先我们要向示例接口请求Json数据 ,并且将请求得到的Json数据保存到本地文件夹下。

代码如下:

using UnityEngine;
using System.Collections;
using System.IO;

public class Downjson : MonoBehaviour {
	//文件夹名称
	string FolderName = "floder";
	//文本名称
	string FileName = "test";
	//文件流
	FileStream file;
	//申请的key值
	static string key = "37ddfcfd037a3da1";
	//要查询的手机号
	static string  shouji = "15998422360";
	string head = "http://api.jisuapi.com/shouji/query?appkey="+key+"&shouji="+shouji;
	string json;
	// Use this for initialization
	void Start () {
		//如果没有创建好文件夹
		if(!Directory.Exists(FolderName)) { 
			string path = Application.dataPath+"/"+FolderName; 
			string path1 = path + "/" + FileName;
			//创建文件夹
			Directory.CreateDirectory(path);
			//如果文件夹下没有名为test的文件
			if (file == null) {
				//创建文件
				file = new FileStream (path1, FileMode.Create); 
			}
		} 
	}
	void OnGUI(){
		if (GUILayout.Button ("生成Json文件")) {
			StartCoroutine (Load());

		}
	}
	
	IEnumerator Load(){
		WWW www = new WWW (head);
		yield return www;
		//获取Json
		json = www.text;
		Debug.Log (json);
		//将json以UTF8的编码存储在byte数组中
		byte[] bts = System.Text.Encoding.UTF8.GetBytes(json);  
		//将字节流写入test文本文件中
		file.Write(bts,0,bts.Length);  
		if(file != null) { 
			//关闭文件流
			file.Close(); 
			Debug.Log ("finish");
		}  
	}
}
现在,我就已经从网络上请求了Json,并且将其保存写入到了本地文件内。下一步,我们要从本地文件内读取Json,并且解析出来我们想要的数据。

代码如下:

using UnityEngine;
using System.Collections;
using System.IO;
using System;
//创建对象类
using System.Collections.Generic;
[Serializable]
public class GameStatus{
	public string status;
	public string msg;  
	public One result;
}
[Serializable]
public class One{
	public string shouji;
	public string province;
	public string city;
	public string company;
	public string cardtype;
	public string areacode;
}
//读取类
public class LoadJson : MonoBehaviour {

	void OnGUI(){
		if (GUI.Button (new Rect(0,50,90,20),"加载Json文件")) {
			GameStatus status = LoadJsonFromFile ();
			//读取json中的数据
			One one = status.result;
			Debug.Log (one.city);

		
		}
	}
	public static GameStatus LoadJsonFromFile(){
		//是否存在test文件
		if (!File.Exists(Application.dataPath + "/floder/test"))
		{
			return null;
		}
		//按照路径读取文件
		StreamReader sr = new StreamReader(Application.dataPath + "/floder/test");

		if (sr == null)
		{
			return null;
		}
		//将读取的文件写入json
		string json = sr.ReadToEnd();

		if (json.Length > 0)
		{
			return JsonUtility.FromJson(json);

		}

		return null;
	}



你可能感兴趣的:(unity)