从服务器解析JSON数据

时间:2017-05-18 12:37:00

标签: c# json parsing unity3d websocket

我知道有很多线程在谈论解析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

等...

评论中的所有内容都是我已经尝试过的。

谢谢!

1 个答案:

答案 0 :(得分:0)

您的json数据格式无效。你可以做Substring

yourstring.Substring(int startindex,int length_of_string);

并从 {开始,以}结尾开始,然后您就可以解析为json。