如何在C#中从JSON中删除属性容器?

如何在C#中从JSON中删除属性容器?,c#,json,json.net,C#,Json,Json.net,我对包含多个元素的JSON有一个问题,我想转换一些JSON对象数组,而不使用包含元素本身的id。基本上我想要的是转换此结构: { "SubscriptionStorages": { "1": { "Type": "subscriberstorage", "SubscriberStorage_Id": 1, "SubscriberStorage_AdminDescription": "JM Basic", "SubscriberStora

我对包含多个元素的JSON有一个问题,我想转换一些JSON对象数组,而不使用包含元素本身的id。基本上我想要的是转换此结构:

{
  "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
    }
  ]
}
对于该结构:

{
  "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;
List items=newlist();
if(itemsList!=null)
{
如果(itemsList.Count>0)
{
JToken outer=JToken.Parse(jsonBody);
foreach(外部的jtokent)
{
items.Add(t.ToString());
}
}
}
退货项目;

您可以这样转换JSON:

var jo = JObject.Parse(originalJson);

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

var modifiedJson = jo.ToString();
var jo=JObject.Parse(原始JSON);
jo[“订阅存储”]=新JArray(
jo[“订阅存储”]
.儿童()
.Select(jp=>jp.Value)
);
var modifiedJson=jo.ToString();

Fiddle:

您想要的结果不是有效的JSON。你是说
订阅存储
是一个数组,即使用
[…]
而不是
{…}
?是的,我的错。你做得对。