我想deseralize一些JSON为一个集(表),但我不知道哪种方法会返回一个对象的列表,还是我通过一些有循环,并将其复制到自己的列表?

谁能告诉我,我应该为此使用的语法或方法。

我已经建立了我的一些特性对象,所以这是准备用来存放数据。 (标题,URL,说明)

我已经试过这一点,但它似乎并不完全正确。

 List<newsItem> test = (List<newsItem>)JsonConvert.DeserializeObject(Fulltext);
有帮助吗?

解决方案

你尝试寻找帮助?

http://james.newtonking.com/json/帮助/?主题= 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; }
}

尝试使用阵列代替通用的列表的。这可能会有帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top