1

谁能帮我将此 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"}
                ]
}

非常感谢,阿德里安

ps 如果你想使用 github,这里有一些不错的代码。https://github.com/lukesampson/HastyAPI.Nexmo

4

2 回答 2

2

我将使用此工具快速作弊并创建 C# 类:http: //json2csharp.com/(或刚刚发现http://jsonclassgenerator.codeplex.com/

在此处输入图像描述

然后我根据自己的喜好更改 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; }
}

MessagesJSON只是我创建的一个名称,它代表您传递给 C# 的 JSON 对象。

我从客户端传递 JSON 字符串,例如

{\"MessageCount\":1,\"Messages\":[{\"To\":\"441234567890\",\"MessagePrice\":0.029,\"Status\":0,\"MessageId\":\"030000001DFE2CB1\",\"RemainingBalance\":1.565,\"Network\":\"23433\"}]

然后我可以使用 JSON.NET 将 JSON 转换为 C# 对象:

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

结果如下:

在此处输入图像描述

注意大小写。

如果您只想使用小写 JSON 密钥,请将 C# 类更改为小写,例如public double messageprice { get; 放; }

C# 类:

 public class MessagesJSON
    {
        public int message_count { get; set; }
        public List<Message> messages { get; set; }
    }

public class Message
{
    public string to { get; set; }
    public string messageprice { get; set; }
    public string status { get; set; }
    public string messageid { get; set; }
    public string remainingbalance { get; set; }
    public string network { get; set; }
}

这与您的 JSON 非常接近:

{\"message_count\":1,\"messages\":[{\"to\":\"441234567890\",\"messageprice\":\"0.02900000\",\"status\":\"0\",\"messageid\":\"030000001DFE2CB1\",\"remainingbalance\":\"1.56500000\",\"network\":\"23433\"}]}

在此处输入图像描述

或者如果您真的喜欢 CamelCasing,请使用以下解决方案之一:

仅当 PropertyName 未在 Json.Net 中明确设置时才使用 CamelCase?

使用 JSON.Net 进行 JObject 和 CamelCase 转换

我自己更喜欢属性

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# 属性名称:

在此处输入图像描述

于 2013-07-30T11:49:09.117 回答
0

创建与 json 结构相同的对象并调用。

JsonConvert.DeserializeObject<Entity>(json);

编辑。如果你想这样做,你必须使用 JSON.NET。

于 2013-07-30T11:31:32.823 回答