JSON数组到C#字典



如何转换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);

相关内容

  • 没有找到相关文章

最新更新