Unity5.x解析Json
2742 ワード
本章では,APIインタフェースからJsonを要求し,それをローカルに保存し,解析をローカルから読み出す.
くだらないことは言わないで、直接乾物に行って、私が選んだ例のインタフェースは電話番号の帰属地を調べる機能です.
まず、サンプルインタフェースにJsonデータを要求し、要求された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;
}