JSON.NET C# .NET 2.0의 객체 목록으로 Deseralize
문제
일부 json을 컬렉션 (목록)으로 탈취하려고하지만 어떤 메소드가 객체 목록을 반환 할 것인지 잘 모르겠습니다. 아니면 무언가를 통해 루프하고 내 목록에 복사해야합니까?
누구든지 내가 이것에 사용해야 할 구문이나 방법을 말해 줄 수 있습니까?
속성으로 객체를 만들었으므로 데이터를 유지하는 데 사용할 준비가되었습니다. (제목, URL, 설명)
나는 이것을 시도했지만 옳지 않은 것 같다
List<newsItem> test = (List<newsItem>)JsonConvert.DeserializeObject(Fulltext);
해결책
도움을 살펴 보셨나요?
http://james.newtonking.com/json/help/?topic=html/serializingcollections.htm
string json = @"[
{
""Name"": ""Product 1"",
""ExpiryDate"": ""\/Date(978048000000)\/"",
""Price"": 99.95,
""Sizes"": null
},
{
""Name"": ""Product 2"",
""ExpiryDate"": ""\/Date(1248998400000)\/"",
""Price"": 12.50,
""Sizes"": null
}
]";
List<Product> products = JsonConvert.DeserializeObject<List<Product>>(json);
Console.WriteLine(products.Count);
// 2
Product p1 = products[0];
Console.WriteLine(p1.Name);
// Product 1
다른 팁
그 확장 방법을 사용하고 있습니다.
public static string ToJSONArray<T>(this IEnumerable<T> list)
{
DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(IEnumerable<T>));
MemoryStream ms = new MemoryStream();
s.WriteObject(ms, list);
return GetEncoder().GetString(ms.ToArray());
}
public static IEnumerable<T> FromJSONArray<T>(this string jsonArray)
{
if (string.IsNullOrEmpty(jsonArray)) return new List<T>();
DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(IEnumerable<T>));
MemoryStream ms = new MemoryStream(GetEncoder().GetBytes(jsonArray));
var result = (IEnumerable<T>)s.ReadObject(ms);
if (result == null)
{
return new List<T>();
}
else
{
return result;
}
}
이와 같이 물체를 장식해야합니다.
[DataContract]
public class MyJSONObject
{
[DataMember]
public int IntValue { get; set; }
[DataMember]
public string StringValue { get; set; }
}
일반 목록 대신 배열을 사용해보십시오. 이것은 도움이 될 수 있습니다.
제휴하지 않습니다 StackOverflow