使用ServiceStack中的数字键反序列化Json

时间:2013-03-30 13:02:07

标签: c# json deserialization servicestack

我有这样的Json:

{
  data:{
    "50":{"id":"50","name":"test", etc...},
    "51":{"id":"51","name":"test", etc...},
    "53":{"id":"53","name":"test", etc...},
    ...
  }
}

反序列化这个Json的正确方法是什么?

[增订]

我想我必须调整我的问题。是否可以使用具有对象描述的类来解析Json。例如。我有这样的类和Json,我用 .FromJson()解析:

public class Data
{
    public ...
}

public class Category
{
    public int Id{get;set;}

    public string Name{get;set;}
}

应该是三个点?

3 个答案:

答案 0 :(得分:3)

您的json包含一个对象O。此对象具有成员data,该成员是从字符串或整数到类别对象的字典。所以尝试类似的事情:

class Root
{
    public Dictionary<int, Category> data;
}

var o = JavaScriptSerializer.Deserialize<Root>(json);

答案 1 :(得分:2)

如果您正在使用servicestack.text,请执行

var v = myJson.FromJson();

不要忘记,当使用servicestack进行序列化时,最好使用servicestack。

答案 2 :(得分:0)

在JSON.NET项目中将Json对象反序列化为c#类的最佳方法(在codeplex上找到)

反序列化示例是:

JsonConvert.DeserializeObject<Category>(jsonString);