2017-09-14 67 views
0

我有一個JSON包含幾個元素的問題,我想轉換一些對象的JSON數組而不包含包含元素本身的id。基本上我要的就是這種結構轉換:如何在C#中從Json中刪除屬性容器?

{ 
    "SubscriptionStorages": { 
    "1": { 
     "Type": "subscriberstorage", 
     "SubscriberStorage_Id": 1, 
     "SubscriberStorage_AdminDescription": "JM Basic", 
     "SubscriberStorage_MaxStorage": 268435456000 
    }, 
    "2": { 
     "Type": "subscriberstorage", 
     "SubscriberStorage_Id": 2, 
     "SubscriberStorage_AdminDescription": "JM Standard", 
     "SubscriberStorage_MaxStorage": 536870912000 
    } 
    } 
} 

這個結構:

{ 
    "SubscriptionStorages": [ 
    { 
     "Type": "subscriberstorage", 
     "SubscriberStorage_Id": 1, 
     "SubscriberStorage_AdminDescription": "JM Basic", 
     "SubscriberStorage_MaxStorage": 268435456000 
    }, 
    { 
     "Type": "subscriberstorage", 
     "SubscriberStorage_Id": 2, 
     "SubscriberStorage_AdminDescription": "JM Standard", 
     "SubscriberStorage_MaxStorage": 536870912000 
    } 
    ] 
} 

有沒有什麼簡單的方法來做到這一點? 這是我到目前爲止,但它不好... 我在這裏錯過了什麼?

List<string> items = new List<string>(); 
if (itemsList != null) 
{ 
    if (itemsList.Count > 0) 
    { 
     JToken outer = JToken.Parse(jsonBody); 
     foreach (JToken t in outer) 
     { 
      items.Add(t.ToString()); 
     } 
    } 
} 
return items; 
+0

你能減少你的樣品JSON到一個小例子(和避免引用它沒有明顯的理由)?當兩個例子比真實時間短的時候,看到兩個例子之間的區別要容易得多。 –

+0

你的願望是我的命令:)完成。 – OrAssayag

+0

由於某種原因,它仍然被引用 - 我會自己解決這個問題。 –

回答

0

您可以將您的JSON是這樣的:

var jo = JObject.Parse(originalJson); 

jo["SubscriptionStorages"] = new JArray(
    jo["SubscriptionStorages"] 
     .Children<JProperty>() 
     .Select(jp => jp.Value) 
); 

var modifiedJson = jo.ToString(); 

小提琴:https://dotnetfiddle.net/9sCx2M