Json建模问题

时间:2013-09-22 07:09:31

标签: c# json parsing

我目前正在使用以下json结构,我不确定如何在我的类上进行建模,因为我以前从未遇到过这种结构。非常感谢任何线索或帮助:

{ "messages": { "1": { "tid": "309", "status": "0", "timestamp": "1379795079", "uid": "1111111111", "txt": "sometext" }, "2": { "tid": "310", "status": "0", "timestamp": "1379795523", "uid": "2222222222", "txt": "sometext2" } }, "status": 1 }

消息值对象不是我所知道的常见json结构,我知道这些是对象,但我不知道如何将它们映射到我的类。

3 个答案:

答案 0 :(得分:0)

我使用 json2csharp 为我建模对象。考虑以下json对象:

{
    "employees": [
    { "firstName":"John" , "lastName":"Doe" }, 
    { "firstName":"Anna" , "lastName":"Smith" }, 
    { "firstName":"Peter" , "lastName":"Jones" }]
}

我从工具中获取这些对象:

public class Employee
{
    public string firstName { get; set; }
    public string lastName { get; set; }
}

public class RootObject
{
    public List<Employee> employees { get; set; }
}

来源:http://json2csharp.com/

答案 1 :(得分:0)

从技术上讲,您的json对象是字典关联数组,甚至哈希表(选择适合您的目标语言)。这样的数据结构是序列化的完全合理的东西。

但是,该特定对象可能更好地序列化为:

{ "messages":
  [
    { "tid": "309"
    , "status": "0"
    , "timestamp": "1379795079"
    , "uid": "1111111111"
    , "txt": "sometext"
    }
  ,
    { "tid": "310"
    , "status": "0"
    , "timestamp": "1379795523"
    , "uid": "2222222222"
    , "txt": "sometext2" }
    }
  ]
, "status": 1
}

(除非发件人希望选择不按顺序发送单个邮件项目)。这当然是我代表它的方式。

答案 2 :(得分:0)

这就是我解决它的方法:

公共类MessagesResponse     {         [JsonProperty( “消息”)]         公共字典消息{get;组; }         [JsonProperty( “状态”)]         public int Status {get;组; }     }

感谢@rici,我意识到使用字典可以解决问题