如何反序列化使用未指定和可变属性名称的JSON对象

Mar*_*nte 2 c# json.net

我有一个类似于此的JSON响应(我无法控制):

{"response":{
  "a" : "value of a",
  "b" : "value of b",
  "c" : "value of c",
  ...
}}
Run Code Online (Sandbox Code Playgroud)

哪里:

  • "a","b","c"是未知的名字.
  • 项目数量可能有所不同.

我最后需要的是一个包含所有值的字符串数组.保持名称是一个奖励(字典?)但我需要按它们出现的顺序浏览值.

你会如何使用JSON.NET实现这一目标?

car*_*ira 5

您可以使用命名空间中的JObjectNewtonsoft.Json.Linq将对象反序列化为类似DOM的结构:

public class StackOverflow_10608188
{
    public static void Test()
    {
        string json = @"{""response"":{
          ""a"" : ""value of a"",
          ""b"" : ""value of b"",
          ""c"" : ""value of c""
        }}";
        JObject jo = JObject.Parse(json);
        foreach (JProperty property in jo["response"].Children())
        {
            Console.WriteLine(property.Value);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)