C#中Json的结构

时间:2010-12-18 09:24:51

标签: c# json

我的目标:
在成功之后,从网站读取JSON,获取某些项目的值并显示它们 拉出来我想要实现接受像true这样的值并将其设置为false 对于初学者,我需要帮助找出如何读取和写入变量。我读过了 关于如何读取数据并解析数据的大量教程和博客,但不是 解释的是存储的值在哪里?

就像我有这个http://elsite.com/.json并且有这个:

{
    dola: "p9", data:{
        house: [{
            dola: "p9", data:{
                owner: "blah",   // string
                price: blah,  // int
                url: "http://www.link.com",  //  url/string
                message: "blahblah",
                checked: false
                }
          },
          {
           dola: "p9", data:{
                owner: "blah", // same as above

我已经构建了这个来获取数据:


[DataContract]
class container
{
    [DataMember(Name = "data")]
    public Data1 dataStart { get; set; }
    [DataContract]
    public class Data1
    {
        [DataMember(Name = "house")]
        public HouseA[] home { get; set; }
        [DataContract]
        public class HouseA
        {
             [DataMember(Name = "data")]
             public Data2 dataSec { get; set; }
             [DataContract]
             public class Data2
             {
                 [DataMember(Name = "owner")]
                 public string own { get; set }
                 [DataMember(Name = "message")]
                 public strinng mess { get; set; }
             }
        }
    }
}

我想用


var blah = from post in container.dataStart.house.data // obviously not the right way to do it
           select new MessageItem
           {
                User = post.own,
                Meza = post.mess
           }


public class MessageItem
{
    public string User;
    public string Meza;
}

所以基本上它归结为我并不完全理解数组和对象的结构。 有人能以正确的方式指导我做from.in.select吗?

2 个答案:

答案 0 :(得分:3)

您是否查看了包含LINQ to JSON支持的Json.NET http://json.codeplex.com/

答案 1 :(得分:1)

我更喜欢JavaScriptSerializer(System.Web.Extensions.dll);以下作品:

JsonResult obj = new JavaScriptSerializer().Deserialize<JsonResult>(json);

var qry = from house in obj.data.house
          let post = house.data
          select new MessageItem
          {
              User = post.owner,
              Meza = post.message
          };

使用:

class JsonResult
{
    public string dola { get; set; }
    public Data data { get; set; }
    public class Data
    {
        public List<House> house { get; set; }
    }
    public class House
    {
        public string dola { get; set; }
        public HouseData data { get; set; }
    }
    public class HouseData
    {
        public string owner { get; set; }
        public int price {get;set;}
        public Uri url {get;set;}
        public string message {get;set;}
        public bool @checked {get;set;}
    }
}