簡體   English   中英

解析包含混合類型數組的奇怪JSON的最高效方式?

[英]Most performant way to parse strange JSON containing arrays of mixed types?

我正在通過WebSocket讀取數據,並且數據以有效JSON的形式返回,但格式奇怪。

這是返回的數據的示例:

[1002,null,[98,"0.00011972","0.00012097","0.00011972","-0.16635331","38.03938952","305130.84018577",0,"0.00014363","0.00011168"]]

我如何使用Json.NET將其變成C#中格式良好的類?

我理想的班級看起來像這樣:

class Message
{
    int MessageId { get; set; }
    int? MessageVal { get; set; }
    Payload Payload { get; set; }
}
class Payload
{
    int PayloadId { get; set; }
    string Item1 { get; set; }
    string Item2 { get; set; }
    ...
    string Item8 { get; set; }
}

如何才能做到這一點? 硬模式:高效而快速

謝謝!

如果您無法控制返回給您的數據的形狀,則可以使用以下方法:

類定義:

public class Message
{
    public int MessageId { get; set; }
    public int? MessageVal { get; set; }
    public Payload Payload { get; set; }
}

public class Payload
{
    public int PayloadId { get; set; }
    public string[] Items { get; set;}
}

反序列化:

var json = @"[1002,null,[98,""0.00011972"",""0.00012097"",""0.00011972"",""-0.16635331"",""38.03938952"",""305130.84018577"",0,""0.00014363"",""0.00011168""]]";

var data = JArray.Parse(json);

var message = new Message()
{
    MessageId = data[0].ToObject<int>(),
    MessageVal = data[1].ToObject<int?>(),
    Payload = new Payload()
    {
        PayloadId = data[2][0].ToObject<int>(),
        Items = data[2].Skip(1).Select(x => x.ToString()).ToArray()
    }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM