【发布时间】:2019-02-08 00:25:22
【问题描述】:
我正在进行一个返回 JSON 的 API 调用(到一个名为 jsonString 的变量中)。对 JSON 数据执行 Console.WriteLine(jsonString) 可以揭示这一点:
{"contentType":null,"serializerSettings":null,"statusCode":null,"value":"{\"contentType\":null,\"serializerSettings\":null,\"statusCode\":空,\"值\":{\"10\":\"ALABAMA\",\"11\":\"ALASKA\",\"12\":\"ARIZONA\",\"13\" :\"阿肯色州\",\"14\":\"加州\",\"15\":\"科罗拉多州\",\"16\":\"康涅狄格州\",\"17\":\ "特拉华州\",\"18\":\"佛罗里达州\",\"19\":\"乔治亚州\",\"20\":\"夏威夷\",\"21\":\"爱达荷州\",\"22\":\"伊利诺伊州\",\"23\":\"印第安纳州\",\"24\":\"爱荷华州\",\"25\":\"堪萨斯州\" ,\"26\":\"肯塔基州\",\"27\":\"路易斯安那州\",\"28\":\"缅因州\",\"29\":\"马里兰州\",\ "30\":\"马萨诸塞州\",\"31\":\"密歇根\",\"32\":\"明尼苏达\",\"33\":\"密西西比州\",\"34 \":\"密苏里\",\"35\":\"蒙大拿\",\"36\":\"内布拉斯加州\",\"37\":\"内华达\",\"38\" :\"新罕布什尔\",\"39\":\"新泽西\",\"40\":\"新墨西哥\",\"41\":\"纽约\",\"42 \":\"北卡罗来纳州\",\"43\":\"北达科他州\",\"44\":\"俄亥俄州\",\"45\":\"俄克拉荷马州\",\"46 \":\"俄勒冈\",\"47\":\"宾夕法尼亚\",\"48\":\"罗德岛\",\"49\":\"南卡罗来纳\",\"50 \":\"南达科他州\",\ "51\":\"田纳西州\",\"52\":\"德州\",\"53\":\"犹他州\",\"54\":\"佛蒙特州\",\"55 \":\"维吉尼亚\",\"56\":\"华盛顿\",\"57\":\"西维吉尼亚\",\"58\":\"威斯康星\",\"59\ ":\"怀俄明州\"}}"}
我正在尝试将其反序列化为如下所示的类:
public class LookupValuesResponse
{
[JsonProperty("value")]
public Dictionary<int, string> LookupValues;
[JsonProperty("statusCode")]
public string Status;
}
我试过了:
LookupValuesResponse lookupresponse = JsonConvert.DeserializeObject<LookupValuesResponse>(jsonString);
但是,我收到无法反序列化 JSON 的错误:
System.ArgumentException : 无法从 System.String 转换或转换为 System.Collections.Generic.Dictionary`2[System.Int32,System.String]。
【问题讨论】:
-
JSON 中的
invalidData在哪里? -
我刚刚尝试过,没有
invalidData和ErrorDesc并且成功了。 -
如果它在没有
invalidData的情况下工作,那么它可能是原因。你能告诉我们InvalidData类型吗?您是否在混淆 JSON 中的某些内容? -
我删除了 invalidData 和 ErrorDesc 并且没有任何变化。我还需要添加
contentType和serializerSettings吗?我需要将其设为Dictionary<string, string>吗? -
@NickHeidke 是的。将其更改为
Dictionary<string, string>。