使用基类反序列化Json响应

时间:2018-08-26 18:54:49

标签: c# json json.net

我无法控制json响应,但是给出的响应具有相同的对象列表,但每个对象的名称不同。它们确实是同一对象,但是我不知道如何用不同的名称反序列化它。 例如:

{   
"Data": { 
       "OBJ_1": {
           "Id": "4321",
           "Url": "/test/url/1"
       },
       "OBJ_2": {
           "Id": "749869",
           "Url": "/test/ur1/1"
       }
    } 
}

我不知道对象的数量或其名称,因此无法正确添加模型。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用JObject.Parse通过JSON密钥名称获取对象。

因此,如果有许多对象和不同的名称,则可以通过键名获得属性。

这是从对象中获取ID的示例。

string jsonData = @"{   
    'Data': { 
        'OBJ_1': {
            'Id': '4321',
            'Url': '/test/url/1'
        },
        'OBJ_2': {
            'Id': '749869',
            'Url': '/test/ur1/1'
        }
    } 
}";

var o = JObject.Parse(jsonData);

foreach (var item in o["Data"])
{
    Console.WriteLine(item.First.Value<string>("Id"));
}

c# online

结果

4321
749869