簡體   English   中英

C# - 如何解碼不包含任何分配的 json 數組

[英]C# - How to decode a json array that does not contain any assignments

我收到一個需要解碼的 json 數組:

[143084,[8906.3,24.990013919999996,8906.8,32.58931742,-32.6,-0.0036,8907,7171.16062768,9075,8620]]

它似乎是一個有效的 json 數組,但我不知道如何解碼它。 通常我使用:

JsonConvert.DeserializeObject<object>(json);

但這在這里不起作用,因為 json 代碼沒有“分配”,因為缺少更好的詞。 它應該是這樣的:

{
"channelId":"456456564",
"values":[ "8906.3,24.990013919999996,8906.8,32.58931742,-32.6,-0.0036,8907,7171.16062768,9075,8620" ]
} 

我什至不知道谷歌是為了什么,因為我不知道正確的詞

"channelId":

所有示例都使用看起來“正常”的 json arrays:/ 抱歉這個含糊的問題:/

任何幫助將不勝感激! 謝謝!

感謝 Daniel A. White!

我最終這樣做了:

message = message.Replace("[", "");
message = message.Replace("]", "");
var array = message.Split(',');

它為我提供了單級數組,我現在可以將其轉換為我需要的 object。 可能不漂亮,但有效。 謝謝丹尼爾!

你可以有一個像這樣的 function

        var jsonArray = @"[143084,[8906.3, 24.990013919999996, 8906.8, 32.58931742, -32.6, -0.0036, 8907, 7171.16062768, 9075, 8620]]";
        var deserializedArray = JArray.Parse(jsonArray);
        var result = new MyObject
        {
            channelId = deserializedArray.First.ToString(),
            values = JsonConvert.SerializeObject(deserializedArray.Last)
        };

        return result;

MyObject 看起來像這樣:

    public class MyObject
    {
        public string channelId { get; set; }
        public string values { get; set; }
    }

這會產生結果:

{
  "channelId": "143084",

  "values": "[8906.3,24.990013919999996,8906.8,32.58931742,-32.6,-0.0036,8907,7171.16062768,9075,8620]"
}

我認為您有兩種選擇

1) 創建一個視圖 model class 代表這個

public class ViewModel
{
  public string channelId { get; set; }
  public string[] values { get; set; }
}

我正在考慮 json 中的值是具有一個值的字符串數組。

2) 像本例一樣使用 JObject class

https://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_Parse.htm

暫無
暫無

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

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