2017-05-18 4 views
0

Ich weiß, dass es viele Thread sprechen über JSON-Daten analysieren, aber die JSON-Daten, die ich von meinem Server bekomme, ist nicht üblich.Parse JSON-Daten vom Server

Also ich habe ein C# Skript in der Einheit, die Json Daten von meinem node.js Server mit Websocket bekommen.

Das ist mein Code in der Einheit:

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(); 
    } 

} 

Die Ausgabe von der Konsole ist: 42 [ "P0", "{\" Einheit \ ": \" hPA \“, \ "Zeit \": "11: 18: 06.836736", "count": 7, "parameter": "P0", "value": 1021.799988} "]

Also würde ich gerne wissen Wie kann ich diese JSON-Daten analysieren? Wenn es möglich ist so etwas wie (in meiner Konsole) haben:

Einheit: hPA

Zeit: 11: 18: 06,836736

Zahl: 7

etc ...

All die Zeile im Kommentar ist alles, was ich bereits versucht habe zu tun.

Vielen Dank!

+0

Der angegebene JSON ist nicht gültig. –

+0

Ihr JSON ist nicht gültig. Wenn Sie das beheben und tatsächlich einen gültigen JSON haben, sehen Sie sich die Antwort an, die ich verlinkt habe. – Programmer

Antwort

0

Ihr JSON-Datenformat ist ungültig. Sie können Teilstring tun

yourstring.Substring (int startindex, int length_of_string);

und nehmen Zeichenkette ab { und endend mit }, dann werden Sie in der Lage sein zu json zu analysieren.