【发布时间】:2017-04-01 17:04:32
【问题描述】:
我正在使用 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 中用于 post 的输入 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 为什么要添加一组额外的花括号或如何防止它们。
有人知道我错过了什么吗?
【问题讨论】:
-
@GillBates 抱歉,4 月 1 日的习惯。
json可能是 OP 写的“输入 json” -
@Sentry 我明白了.. 变量
json是什么,你没有在代码中显示它。 -
@Sentry 哦,你甚至都不是 OP,哈哈。
-
具体来说,变量(或成员)
json是如何声明的?也许它实际上并没有被声明为一个字符串。 -
就是上面介绍的Input json。