反序列化 JSON 时出现 C# 错误

标签 c# arrays json.net

我正在使用 json.net 反序列化 WebApi 服务中传入的 json。

var lines = JsonConvert.DeserializeObject<RootObject>(json);

在阅读了许多其他类似的答案后,它仍然抛出此错误:

The best overloaded method match for  'Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(string)' has some invalid arguments

输入Postman中用于发布的json:

{ "data": [
{"zipcode":"56033","line1":"610 4TH ST","city":"FROST","state":"MN","cid":"1770"},
{"zipcode":"56033","line1":"45375 30TH ST","city":"FROST","state":"MN","cid":"1771"},
{"zipcode":"56033","line1":"115 4TH ST","city":"FROST","state":"MN","cid":"1772"}
]}

poco 类是使用以下命令创建的:http://json2csharp.com .

  public class Datum
  {
    public string zipcode { get; set; }
    public string line1 { get; set; }
    public string city { get; set; }
    public string state { get; set; }
    public string cid { get; set; }
  }

  public class RootObject
  {
    public List<Datum> data { get; set; }
  }

这是我调试 api 时看到的内容:

{{
  "data": [
    {
      "zipcode": "56032-0056",
      "line1": "208 MAIN BOX 56",
      "city": "FREEBORN",
      "state": "MN",
      "cid": "1732"
    },
    {
      "zipcode": "56033",
      "line1": "610 4TH ST",
      "city": "FROST",
      "state": "MN",
      "cid": "1770"
    },
    {
      "zipcode": "56033",
      "line1": "45375 30TH ST",
      "city": "FROST",
      "state": "MN",
      "cid": "1771"
    },
    {
      "zipcode": "56033",
      "line1": "115 4TH ST",
      "city": "FROST",
      "state": "MN",
      "cid": "1772"
    },
    {
      "zipcode": "56033",
      "line1": "E 4TH ST",
      "city": "FROST",
      "state": "MN",
      "cid": "1773"
    }
  ]
}}

不确定为什么 webapi 添加一组额外的花括号或如何防止它们。

有人看到我错过了什么吗?

最佳答案

如果你的 json 变量是一个字符串,它就可以工作。这是 .NET Fiddle演示。

关于反序列化 JSON 时出现 C# 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43159686/

相关文章:

c# - 装饰者模式的替代品

c# - jQuery - 更改下拉列表索引也会更改值

arrays - 将包含多个范围的范围拆分为一个范围数组?

python - 写入文件、读取文件并使用不同的模块调用它们

arrays - 查找在 Q# 中传递给您的数组的长度

ios - XCODE 中的 Json.Net 错误 - System.Reflection.Emit

c# - zip lib (zlib, bzip2) 和单声道支持

c# - ElasticSearch NEST API 将值更新为空

c# - 使用 JSON.NET 实现自定义日期时间转换器

c# - 有没有办法只将特定的 C# 属性标记为可序列化?