在C#4.0中解析JSON

在C#4.0中解析JSON,json,c#-4.0,Json,C# 4.0,有人能帮我把这个JSON解析成C#4.0中的一个对象吗。过去两天我一直在努力。 我有JSON.NET和其他几个人的建议,但都没有用 我认为最好给出JSON示例并征求您的建议 { "message-count":"1", "messages":[ {"to":"441234567890", "messageprice":"0.02900000", "status":"0", "messageid":"030000001DF

有人能帮我把这个JSON解析成C#4.0中的一个对象吗。过去两天我一直在努力。
我有JSON.NET和其他几个人的建议,但都没有用

我认为最好给出JSON示例并征求您的建议

{
"message-count":"1",
"messages":[
        {"to":"441234567890",
          "messageprice":"0.02900000",
          "status":"0",
          "messageid":"030000001DFE2CB1",
          "remainingbalance":"1.56500000",
                      "network":"23433"}
                ]
}
非常感谢,, 阿德里安


p、 如果你想使用github,这里有一些不错的代码

创建与json和调用具有相同结构的对象

JsonConvert.DeserializeObject<Entity>(json);
JsonConvert.DeserializeObject(json);
编辑。如果你想这样做,你必须使用JSON.NET。

我将使用这个工具快速作弊并创建C类:(或刚刚发现)

然后我根据自己的喜好改变C#类

public class MessagesJSON
{
    public int MessageCount { get; set; }
    public List<Message> Messages { get; set; }
}

public class Message
{
    public string To { get; set; }
    public double MessagePrice { get; set; }
    public int Status { get; set; }
    public string MessageId { get; set; }
    public double RemainingBalance { get; set; }
    public string Network { get; set; }
}
然后我可以使用JSON.NET将JSON转换为C#对象:

public void YourMethod(MessagesJSON json) {
   var result = JsonConvert.DeserializeObject<MessagesJSON>(json);
}

如果您真的喜欢,也可以使用以下解决方案之一:

我自己更喜欢属性

public class Message
    {
        [JsonProperty("to")]
        public string To { get; set; }

        [JsonProperty("messageprice")]
        public string MessagePrice { get; set; }

        [JsonProperty("status")]
        public string Status { get; set; }

        [JsonProperty("messageid")]
        public string MessageId { get; set; }

        [JsonProperty("remainingbalance")]
        public string RemainingBalance { get; set; }

        [JsonProperty("network")]
        public string Network { get; set; }
    }
传递您的字符串:

"{\"message_count\":1,\"messages\":[{\"to\":\"441234567890\",\"messageprice\":\"0.02900000\",\"status\":\"0\",\"messageid\":\"030000001DFE2CB1\",\"remainingbalance\":\"1.56500000\",\"network\":\"23433\"}]}"
但是要有漂亮的C#属性名称:


首先,我建议避免JSON键中的破折号:“消息计数”将导致额外的工作。使用“message_count”Hi广告,我无法控制这一点。这是我从服务器上得到的。我已经设法解决了。我只是在使用JSON.Net时,类结构出错了。不过,似乎要花相当长的时间才能加载。为什么微软对JSON没有一个合理的介绍?“消息计数”:“1”@ADNow:为什么你建议不要在属性名中使用破折号?是因为C语言不允许它(因此需要类上的额外属性)?您不能使用点语法引用JavaScript中的连字符键,如data.message-count,您必须使用data[“message count”]。我也没有看到谷歌建议在他们的指南中使用破折号:嗨,广告,这正是我所做的。非常感谢,谢谢你。我就是这么做的。
{\"message_count\":1,\"messages\":[{\"to\":\"441234567890\",\"messageprice\":\"0.02900000\",\"status\":\"0\",\"messageid\":\"030000001DFE2CB1\",\"remainingbalance\":\"1.56500000\",\"network\":\"23433\"}]}
public class Message
    {
        [JsonProperty("to")]
        public string To { get; set; }

        [JsonProperty("messageprice")]
        public string MessagePrice { get; set; }

        [JsonProperty("status")]
        public string Status { get; set; }

        [JsonProperty("messageid")]
        public string MessageId { get; set; }

        [JsonProperty("remainingbalance")]
        public string RemainingBalance { get; set; }

        [JsonProperty("network")]
        public string Network { get; set; }
    }
"{\"message_count\":1,\"messages\":[{\"to\":\"441234567890\",\"messageprice\":\"0.02900000\",\"status\":\"0\",\"messageid\":\"030000001DFE2CB1\",\"remainingbalance\":\"1.56500000\",\"network\":\"23433\"}]}"