2014-09-03 20 views
0

我有一個非常複雜的JSON從API返回。我只需要將「第一級」傳遞給客戶端,而不包含其中包含的所有嵌套對象。Json.Net:修剪對象以節省網絡流量

例如:

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

我想傳遞給客戶端的唯一名字&年齡,而不是「學」。 有沒有簡單的方法來做到這一點?

+0

當你打從這個API?服務器端方法? – 2014-09-03 15:46:06

+0

@NickZimmerman,是的,來自第三方的服務器端方法。 – Nir 2014-09-03 15:48:34

+0

你是從你的服務器端代碼還是客戶端代碼調用它? – 2014-09-03 15:50:47

回答

1

您可以將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 
}