Unity5.x解析Json

2742 ワード

本章では,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;
	}