如何在C#中从Json中删除属性容器?
问题描述:
我有一个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;
答
您可以将您的JSON是这样的:
var jo = JObject.Parse(originalJson);
jo["SubscriptionStorages"] = new JArray(
jo["SubscriptionStorages"]
.Children<JProperty>()
.Select(jp => jp.Value)
);
var modifiedJson = jo.ToString();
你能减少你的样品JSON到一个小例子(和避免引用它没有明显的理由)?当两个例子比真实时间短的时候,看到两个例子之间的区别要容易得多。 –
你的愿望是我的命令:)完成。 – OrAssayag
由于某种原因,它仍然被引用 - 我会自己解决这个问题。 –