我不知道如何使用任何數字創建 JSONProperty。例如,我收到的 JSON 從一開始就是這樣的:
{ "255710": { "success": true,...
我遇到的具體問題是,第一個數字,在本例中為 255710,可以是任何亂數。因此我不能那么容易地反序列化它。
我已經嘗試過:
[JsonProperty("*")] [JsonProperty()] and [JsonProperty("")]
但我在這里沒有想法了。
這個問題有什么聰明的解決方案嗎?我感謝每一個幫助。
uj5u.com熱心網友回復:
嘗試這個
var json ="{ \"255710\": { \"success\": true}}";
var dict=JsonConvert.DeserializeObject<Dictionary<string,SuccessClass>>(json);
public class SuccessClass
{
[JsonProperty("success")]
public bool Success {get; set;}
}
如何使用
var success=dict["255710"].Success; // true
或者你可以使用 int 如果你更喜歡它
var dict=JsonConvert.DeserializeObject<Dictionary<int,SuccessClass>>(json);
var success=dict[255710].Success; //true
或者如果您不知道鍵名
var key=dict.Keys.First();
var success=dict[key].Success; // true
// or if you don't need a key
var successObj=dict.Values.First(); //the whole sucess class
var success=dict.Values.First().Success; //true
uj5u.com熱心網友回復:
有幾種方法可以決議這個 JSON。一種方法是使用 JObject 并跳過第一個元素,然后為方便起見,轉換為動態如下:
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Linq;
string json = "{ \"123\": { \"success\": true, \"other\": \"the string\" } }";
JObject obj = JsonConvert.DeserializeObject<JObject>(json);
var dyn = obj.First.First.ToObject<dynamic>();
Console.WriteLine($"dyn.success: {dyn.success}");
Console.WriteLine($"dyn.other: {dyn.other}");
這將輸出:
dyn.success: True
dyn.other: the string
我跳過了第一個元素,因為它是隨機的,但你應該問問自己它是否真的是隨機的。它不是方法呼叫的 id 嗎?如果是,那么您可以更輕松地將其轉換為字典,只需讀取帶有 ID 的鍵即可。
如果您知道結果,您也可以使用強型別類。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/438176.html
