我有以下JSON字符串:
{
"id": "0",
"version": "1.1",
"result": {
"status": "{\"1\": \"CONTINUOUS\", \"3\": \"NOT_CONFIGURED\", \"2\": \"NOT_CONFIGURED\", \"4\": \"EVENTO\"}"
}
}
我想将此字符串反序列化为c#类。首先,我使用了json2csharp.com,我得到了这些c#类来反序列化字符串:
public class Result {
public string status { get; set; }
}
public class RootObject {
public string id { get; set; }
public string version { get; set; }
public Result result { get; set; }
}
此解决方案对我无效,因为status不是字符串,而是Dictionary对象。这本词典的关键和价值并没有固定,可能会有所不同。
我的解决方法:
我在Result类中添加了一个方法来获取该字典,但我意识到这种解决方法并不是非常好的,而且我很确定有人可以为我提供更好的解决方案。 使用方法分类:
public class Result {
public string status { get; set; }
public Dictionary < string, string > GetValues() {
return JsonConvert.DeserializeObject < Dictionary < string, string >> (status);
}
}
提前致谢
答案 0 :(得分:0)
这里的问题是:
如何从字符串中获取字典:
"status": "{\"1\": \"CONTINUOUS\", \"3\": \"NOT_CONFIGURED\", \"2\": \"NOT_CONFIGURED\", \"4\": \"EVENTO\"}"
您知道status
键“指向”字符串类型的值,并且该字符串被格式化为一个词典。您还知道字典是{
- key:values
对的序列 - }
。
唯一的问题仍然是键和值的类型。如果你的键和值总是相同的类型(比如说,示例中的整数和字符串),问题就解决了。
只需将status
字符串解析为字典。
答案 1 :(得分:0)
我忘了说我在Result类中包含了GetValues方法,因为如果我将status属性设置为Dictionary不起作用。
JsonSerializationException
转换值时出错&#34; {&#34; 1&#34;:&#34;连续&#34;,&#34; 3&#34;:&#34; NOT_CONFIGURED&#34;,&#34; 2&# 34;:&#34; NOT_CONFIGURED&#34;,&#34; 4&#34;:&#34; NOT_CONFIGURED&#34;}&#34;键入&#39; System.Collections.Generic.Dictionary 2[System.String,System.String]'. Path 'result.status', line 1, position 157.
+ InnerException {"Could not cast or convert from System.String to System.Collections.Generic.Dictionary
2 [System.String,System.String]。&#34;} System.Exception {System.ArgumentException}