3 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
試試這個(gè):
var obj = JsonConvert.DeserializeObject<List<Result>>(Json);
說(shuō)明:如果 JSON 是數(shù)組,則 C# RootObject 必須從 List/IEnumerable 本身派生,或者將其反序列化為類型的列表/數(shù)組。
你可以轉(zhuǎn)儲(chǔ)你的RootObject
班級(jí)。如果您想使用該RootObject
類型,請(qǐng)使其派生自 List。但這不值得麻煩。

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊
您的 JSON 是一個(gè)異構(gòu)數(shù)組,包含一個(gè)字符串和一個(gè)對(duì)象。沒(méi)有一點(diǎn)幫助,這不會(huì)干凈地反序列化為強(qiáng)類型的類結(jié)構(gòu)。一種可能的解決方案是使用這樣的自定義JsonConverter:
public class ResultConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(Result);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JArray array = JArray.Load(reader);
Result result = new Result
{
String = array[0].Value<string>(),
cm = array[1].ToObject<CodeMsg>(serializer)
};
return result;
}
public override bool CanWrite
{
get { return false; }
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
然后使用如下屬性將轉(zhuǎn)換器綁定到您的Result類:[JsonConverter]
[JsonConverter(typeof(ResultConverter))]
public class Result
{
public string String { get; set; }
public CodeMsg cm { get; set; }
}
最后,將 JSON 反序列化到Result類中,如下所示:
var result = JsonConvert.DeserializeObject<Result>(Json);
工作演示:https ://dotnetfiddle.net/RLpm5W
注意:您可以刪除RootObject班級(jí);這里不需要。

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
請(qǐng)確保您的 json 字符串必須具有與 JsonHolder 類相同的屬性。
public class JsonHolder
{
public string Id {get;set;}
public string Name {get;set;}
public string Gender {get;set;}
}
var jsonHolderList = new JsonConvert.DeserializeObject<List<JsonHolder>>(jsonString);
var jsonHolder = jsonHolderList.Single()
您還可以將 json 字符串轉(zhuǎn)換為 c# 對(duì)象作為動(dòng)態(tài)對(duì)象。請(qǐng)確保您的 json 字符串必須具有與 JsonHolder 類相同的屬性。
dynamic obj= new JsonConver.DeserializeObject<List<JsonHolder>>(StrJson);
- 3 回答
- 0 關(guān)注
- 212 瀏覽
添加回答
舉報(bào)