json - 在 C# 4.0 中解析 JSON

标签 json c#-4.0

任何人都可以帮我将此 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.s 如果你想使用 github,这里有一些不错的代码。 https://github.com/lukesampson/HastyAPI.Nexmo

最佳答案

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

enter image description here

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

结果如下:

enter image description here

注意大小写。

如果您只想使用小写 JSON 键,请将 C# 类更改为小写,例如公共(public)双消息价格{获取;放; }

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\"}]}

enter image description here

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

CamelCase only if PropertyName not explicitly set in Json.Net?

JObject & CamelCase conversion with JSON.Net

我自己更喜欢属性

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

enter image description here

关于json - 在 C# 4.0 中解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17945634/

相关文章:

javascript - 如何在 angularJs 中访问 stdclass json 对象?

java - 以通用方式处理 JSON 响应

ios - 向下滚动时出现 fatal error

c# - 通过文本窗口应用程序崩溃搜索

c# - 如何测试 AccessViolationException 的处理

c# - Parallel.ForEach 与 Task.Factory.StartNew

ios - 无法在 Swift 中导入 ObjectMapper

asp.net-mvc-2 - 如何更改 Entity Framework 连接上的数据库

c# - 使用 lambda 表达式连接 3 个表?

javascript - JavaScript 中的对象是如何存储在内存中的?