[英]Handling Single and Multiple Json data
我有如下的json字符串輸出,這是單個項目,也可以有多個項目。
[{"name":"someName","id":10,"state":"someState"}]
當我嘗試使用JsonConvert
反序列化以上json字符串時, JsonConvert
以下錯誤。
無法將當前JSON對象(例如{\\“ name \\”:\\“ value \\”})反序列化為類型'System.Collections.Generic.List`1,因為該類型需要JSON數組(例如[1,2,3] )以正確地反序列化。\\ r \\ n要解決此錯誤,可以將JSON更改為JSON數組(例如[1,2,3]),也可以更改反序列化的類型,使其成為普通的.NET類型(例如,不是原始類型)例如整數,而不是可以從JSON對象反序列化的集合類型(如數組或List)。
這是代碼塊,
string response = response.Content.ReadAsStringAsync().Result; // gives json string var result1 = JsonConvert.DeserializeObject<RootObject>(response); // this works var result2 = JsonConvert.DeserializeObject<List<RootObject>>(response); // gets error here
由於json字符串可以包含單個或多個項目,因此在反序列化時我無法使用RootObject。
RootObject類看起來像
public class RootObject
{
[JsonProperty("name")]
public string Name{ get; set; }
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("state")]
public string State { get; set; }
}
我曾嘗試在RootObject類的屬性級別和類級別使用custom JsonConverter
,並引用了此方法 ,但無法弄清楚如何在我的情況下使用相同的JsonConverter。
我不確定,為什么您要說代碼無法正常工作並引發錯誤。 我試圖重新產生該問題,但從我看來它似乎工作正常。
using System;
using System.Linq;
using System.Collections.Generic;
using Newtonsoft.Json;
public class Program
{
public static void Main()
{
string json="[{\"name\":\"someName\",\"id\":10,\"state\":\"someState\"},{\"name\":\"someName\",\"id\":10,\"state\":\"someState\"}]";
string json2="[{\"name\":\"someName\",\"id\":10,\"state\":\"someState\"}]";
var result1 = JsonConvert.DeserializeObject<List<RootObject>>(json);
var result2 = JsonConvert.DeserializeObject<List<RootObject>>(json2);
Console.WriteLine("result1 count="+result1.Count());
Console.WriteLine("result2 count="+result2.Count());
}
}
public class RootObject
{
[JsonProperty("name")]
public string Name{ get; set; }
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("state")]
public string State { get; set; }
}
點網小提琴在這里
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.