Json.Net:修剪一个对象以节省网络流量



我有一个从API返回的非常复杂的JSON。我只需要将"第一级"传递给客户端,而不需要其中包含所有嵌套对象

例如:

  {
    "name": "David",
    "age": 5,
    "school": {
        "name": "Highschool",
        "location": "AZ"
    }
}

我想只传递给客户端名称&年龄,而不是"学校"。有简单的方法吗?

您可以将JSON解析为JObject,然后将所有"简单"属性(即那些不是对象和数组的属性)复制到新的JObject。然后从副本中获取新的JSON。

例如:

string json = @"
{
    ""name"": ""David"",
    ""age"": 5,
    ""school"": {
        ""name"": ""Highschool"",
        ""location"": ""AZ""
    }
}";
JObject origObj = JObject.Parse(json);
JObject copyObj = new JObject();
foreach (JProperty prop in origObj.Properties())
{
    if (prop.Value.Type != JTokenType.Object &&
        prop.Value.Type != JTokenType.Array)
    {
        copyObj.Add(prop.Name, prop.Value);
    }
}
json = copyObj.ToString();
Console.WriteLine(json);

以上将输出以下内容:

{
  "name": "David",
  "age": 5
}

相关内容

  • 没有找到相关文章

最新更新