我是一个对JSON的概念稍有生疏的人,所以请多包涵。
我有一个方法,它返回下面这个又长又复杂的字符串:
在这种情况下,
问题是运行时会抛出错误。
“无法将当前 JSON 数组(如 [1,2,3])反序列化为类型 'System.Collections.Generic.Dictionary`2[System.String,System.String]',因为该类型需要 JSON 对象(如 {"name":"value"})才能正确反序列化。
要解决此错误,请将 JSON 更改为 JSON 对象(例如 {"name":"value"}),或将反序列化类型更改为数组或实现集合接口的类型(例如 ICollection、IList),例如可以从 JSON 数组反序列化的 List。也可以向类型添加 JsonArrayAttribute 强制它从 JSON 数组反序列化。
路径 '',行 1,位置 1。
由于我在 JSON 方面很新手,所以被这个问题难住了。
我的不太美观的
如果是的话,这理论上应该可以工作,对吧?
我还预见到一个问题,就是
我需要将
请给予建议。
我有一个方法,它返回下面这个又长又复杂的字符串:
[{\"identifierType\":\".Identifier\",\"title\":\"Test\",\"typeName\":\"Application1\",\"key\":\"1\",\"internalId\":1},{\"identifierType\":\".Identifier\",\"title\":\"Test2\",\"typeName\":\"Application2\",\"key\":\"2\",\"internalId\":15},{\"identifierType\":\".Identifier\",\"title\":\"Test3\",\"typeName\":\"Application3\",\"key\":\"3\",\"internalId\":1124},{\"identifierType\":\".Identifier\",\"title\":\"Test4\",\"typeName\":\"Application4\",\"key\":\"4\",\"internalId\":2241}]
她看起来又长又丑,但这是我要处理的内容。
经过一番搜索,我发现这是一个 JSON 字符串,并且可以在 C# 中映射为一个字典。
接着,经过更多的搜索,我找到了以下内容:
Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(s);
在这种情况下,
s
是我长而丑陋的字符串。问题是运行时会抛出错误。
“无法将当前 JSON 数组(如 [1,2,3])反序列化为类型 'System.Collections.Generic.Dictionary`2[System.String,System.String]',因为该类型需要 JSON 对象(如 {"name":"value"})才能正确反序列化。
要解决此错误,请将 JSON 更改为 JSON 对象(例如 {"name":"value"}),或将反序列化类型更改为数组或实现集合接口的类型(例如 ICollection、IList),例如可以从 JSON 数组反序列化的 List。也可以向类型添加 JsonArrayAttribute 强制它从 JSON 数组反序列化。
路径 '',行 1,位置 1。
由于我在 JSON 方面很新手,所以被这个问题难住了。
我的不太美观的
s
不是我想象中的 JSON 字符串吗?如果是的话,这理论上应该可以工作,对吧?
我还预见到一个问题,就是
s
中似乎有多个对象。当我尝试将其映射到一个 Dictionary
时,这不会引起问题吗?我需要将
s
映射到多个 Dictionary
吗?请给予建议。
List<Dictionary<string, string>> values = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(s);
吗?因为你的 JSON 文本以[
开头。 - Orifjon"替换所有
"` :) - Tamás Deme