C# - 将第二个JSON字符串添加到现有类

时间:2017-11-29 20:59:50

标签: c# .net json json.net

我有一对看起来像这样的类:

public class Parent
{
    public int id { get; set; }
    public string name { get; set; }
    public List<Child> children { get; set; }
}
public class Child
{
    public int id { get; set; }
    public string name { get; set; }
}

为了填充父类,我进行API调用并反序列化返回的JSON,如下所示:

JSON

{
 “parent”:{
   “id”:”123”,
   “name”:”parent name”,
   “child”:{
       “id”:”456″
   },
 }
}

C#

var parent = new JavaScriptSerializer().Deserialize<List<Parent>>(jsonString);

然后我使用id的{​​{1}}进行另一次API调用,返回有关child的更多详细信息,我需要用它来填充child:< / p>

parent

如何使用{ “child”:{ “id”:”456”, “name”:”child name” } } JSON字符串中的数据填充Parent类的其余部分?

2 个答案:

答案 0 :(得分:2)

如果我理解正确,您只需要为Parent.children的每个部分孩子提出请求,然后用完整的孩子信息替换整个收集:

var parents = new JavaScriptSerializer().Deserialize<List<Parent>>(jsonString);
foreach (var parent in parents) {
    var fullChildren = new List<Child>();
    foreach (var partialChild in parent.children) {
        var fullChild = GetChildJsonById(partialChild.id);
        fullChildren.Add(fullChild);
    }
    // just replace whole stuff
    parent.children = fullChildren;
}

答案 1 :(得分:0)

我没有对此进行过测试,但我相当肯定你可以这样做:

var child = new JavaScriptSerializer().Deserialize<Child>(jsonString);

假设您想要的只是更新您的子课程,那么应该没有更多内容。

这似乎效率低下,我不知道为什么第一次api调用没有提供完整的子对象。