我知道有很多线程在谈论解析json数据,但是从我的服务器获取的json数据并不常见。
所以我有一个统一的c#脚本,它使用websocket从我的node.js服务器获取json数据。
这是我的团结代码:
using UnityEngine;
using System.Collections;
using System;
using System.Threading;
using WebSocketSharp;
[Serializable]
public class ParamJSON
{
public string parameter;
public string unit;
public int count;
public float value;
public Time time;
}
public class Program : MonoBehaviour
{
string waka;
ParamJSON data;
WebSocket ws;
// Use this for initialization
void Start()
{
ws = new WebSocket(url of server);
print("Open socket: " + ws.ReadyState);
print("Websocket Alive: " + ws.IsAlive);
ws.OnMessage += (sender, e) =>
{
waka = e.Data;
print(waka);
//ParamJSON[] obj = JsonHelper.getJsonArray<ParamJSON>(waka);
//print(obj);
//ParamJSON P = JsonUtility.FromJson<ParamJSON>(waka);
//Debug.Log(P.parameter);
//data = CreateFromJSON(waka);
//Debug.Log(data);
//Debug.Log("parameter = " + data.parameter);
//print("JSON data : " + CreateFromJSON(waka));
};
ws.OnOpen += (sender, e) => {
print("WebSocket-> Open:");
print("Open socket-> OnOpen: " + ws.ReadyState);
};
ws.OnError += (sender, e) => {
print("WebSocket-> Error: " + e.Message);
print("Open socket-> OnError: " + ws.ReadyState);
};
ws.OnClose += (sender, e) => {
print("WebSocket-> Close-code: " + e.Code);
print("WebSocket-> Close-reason: " + e.Reason);
print("Open socket-> OnClose: " + ws.ReadyState);
};
ws.Connect();
}
public class JsonHelper
{
public static T[] getJsonArray<T>(string json)
{
string newJson = "{ \"array\": " + json + "}";
Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>>(newJson);
return wrapper.array;
}
[Serializable]
private class Wrapper<T>
{
public T[] array;
}
}
//public static ParamJSON CreateFromJSON(string jsonString)
//{
// return JsonUtility.FromJson<ParamJSON>(jsonString);
//}
// Update is called once per frame
void Update()
{
}
void OnDestroy()
{
if (ws != null && ws.ReadyState == WebSocketState.Open)
ws.Close();
}
}
控制台的输出为:42 [“P0”,“{\”unit \“:\”hPA \“,\”time \“:\”11:18:06.836736 \“,\”count \ “:7,\” 参数\ “:\” P0 \ “\ ”值\“:1021.799988}”]
所以我想知道如何解析这个json数据? 如果可能有类似的东西(在我的控制台中):
单位:hPA
时间:11:18:06.836736
数:7
等...
评论中的所有内容都是我已经尝试过的。
谢谢!
答案 0 :(得分:0)
您的json数据格式无效。你可以做Substring
yourstring.Substring(int startindex,int length_of_string);
并从 {开始,以}结尾开始,然后您就可以解析为json。