如何使用JavaScriptSerializer使用数字键解析JSON对象

我有一个像下面这样的对象在C#中被反序列化。 我想知道如何解析它。 我在这里尝试了这个例子 ,但是我很难理解如何让我的类识别每个对象的键(下面的23 )。

下面的JSON字符串基本上代表2个事务。 我想将每个事务表示转换为Transaction对象并将其放入Transaction对象的数组中。

 { "2": { "id": "2", "user_id": "59", "offer_id": "1234" }, "3": { "id": "3", "user_id": "59", "offer_id": "1234" } } 

这是我的课程:

 public class Transactions { // what goes here since the "key" field is always different? } public class Transaction { public int id { get; set; } public int user_id { get; set; } public int offer_id { get; set; } } 

可以使用JSON.Net库中的JObject来完成。

 var transactions = JObject.Parse(json).PropertyValues() .Select(o => o.ToObject()); 

这应该可以解决问题。

使用JavaScriptSerializer ,您可以通过反序列化为Dictionary来处理此问题。 从那里你可以很容易地将它转换为数组,如果你需要。

示例代码:

 string json = @" { ""2"": { ""id"": ""2"", ""user_id"": ""59"", ""offer_id"": ""1234"" }, ""3"": { ""id"": ""3"", ""user_id"": ""59"", ""offer_id"": ""1234"" } }"; var serializer = new JavaScriptSerializer(); var dict = serializer.Deserialize>(json); var transactions = dict.Select(kvp => kvp.Value).ToArray(); foreach (Transaction t in transactions) { Console.WriteLine(string.Format( "id: {0}, user_id: {1}, offer_id: {2}", t.id, t.user_id, t.offer_id)); }