如何转换JSON array 喜欢此
[{"myKey":"myValue"},
{"anotherKey":"anotherValue"}]
用json.net或System Glass进行C#字典。
json.net可以直接序列化到字典,,但只有在将其馈入对象而不是阵列时。
也许转换为keyValuepairs的数组会有所帮助
using System.Linq;
var list = JsonConvert.DeserializeObject<IEnumerable<KeyValuePair<string, string>>>(jsonContent);
var dictionary = list.ToDictionary(x => x.Key, x => x.Value);
对任何感兴趣的人 - 这也有效:
示例JSON:
[{" device_id":" vc2","命令":6," command_args":" test args10"}, {" device_id":" vc2","命令":3," command_args":" test args9"}]
c#:
JsonConvert.DeserializeObject<List<JObject>>(json)
.Select(x => x?.ToObject<Dictionary<string, string>>())
.ToList()
实际上很简单:
可以说,您在以下字符串中获得JSON:
string jsonString = @"[{"myKey":"myValue"},
{"anotherKey":"anotherValue"}]";
然后,您可以使用JSON.NET对其进行审理,如下所示:
JArray a = JArray.Parse(jsonString);
// dictionary hold the key-value pairs now
Dictionary<string, string> dict = new Dictionary<string, string>();
foreach (JObject o in a.Children<JObject>())
{
foreach (JProperty p in o.Properties())
{
string name = p.Name;
string value = (string)p.Value;
dict.Add(name,value);
}
}
我发现使用keyValuepairs列表不起作用。我得到了正确数量的元素,但它们具有空键和值。
最终,对我有用的唯一解决方案是词典列表(每个都有一个KVP元素(。
必须按以下(格式(发送数据:
"Values": [
{"Key" : "abc" , "Value": 23.14},
{"Key" : "abc1" , "Value": 23.11},
{"Key" : "abc2" , "Value": 23.17},
{"Key" : "abc3" , "Value": 23.19}
]
因此,转换过程将起作用。我尝试从JSON转换为dictionary<string,decimal>
,因为您只能从对象中进行绝对序列化,因此请首先操作JSON字符串来执行此操作。将其包裹在对象中:
json = String.Format("{{"result":{0}}}", json);