如何用c#中的动态子对象名解析JSON对象

时间:2015-06-19 02:39:54

标签: c# json

我已在此问过:sample

但现在我有一个不同的json格式:

{
  "response": "success",
  "example" :{
       "001":{
            "ID":"001",
            "Name":"Test1"  
        },
       "002":{
            "ID": "002",
            "Name": "test2"
       }
   },
  "reference": "google.com"
}

我的问题是如何访问Name

1 个答案:

答案 0 :(得分:0)

您只需要在string课程中添加几个Response成员。

大多数情况下,代码根本没有改变 您甚至可以使用之前的代码解析此对象 - 您将丢失responsereference值。

public class Response
{
    public string response { get; set; }
    public Dictionary<string, ExampleObj> example { get; set; }
    public string reference { get; set;}
}

public class ExampleObj {
    public string ID { get; set; }
    public string Name { get; set; }
}

// Somewhere in code

string jsonString = "{ \"response\": \"success\", \"example\" :{ \"001\":{ \"ID\":\"001\", \"Name\":\"Test1\" }, \"002\":{ \"ID\": \"002\", \"Name\": \"test2\" } }, \"reference\": \"google.com\"}";

var obj = JsonConvert.DeserializeObject<Response>(jsonString);

foreach (var keyValuePair in obj.example)
{
    Console.WriteLine("That's a {0}", keyValuePair.Key);
    Console.WriteLine("It's name is {0}", keyValuePair.Value.Name);
}

Console.WriteLine("And, Hey! That's a reference '{0}' and response '{1}'", obj.reference, obj.response);

我希望你每次需要向一个类添加一个变量时都不会问一个问题。您应该尝试自己理解它:阅读文档,谷歌了解具体的理论问题而不是实际的解决方案,尝试自己做。这是成为软件工程师的唯一途径。