我有这样的JSON文字:
...
"simples":{
"AS100ELABQVKANID-91057":{
"meta":{
"sku":"AS100ELABQVKANID-91057",
"price":"3669000.00",
"original_price":"3379000.00",
"special_to_date":"2015-03-19 23:59:59",
"shipment_type":"1",
"special_price":"3299000.00",
"tax_percent":"10.00",
"sourceability":"Sourceable",
"quantity":"15",
"variation":"...",
"package_type_position":"0",
"min_delivery_time":"1",
"max_delivery_time":"3",
"attribute_set_name":"electronics",
"3hours_shipment_available":false,
"estimated_delivery":"",
"estimated_delivery_position":""
},
"attributes":{
"package_type":"Parcel"
}
}
},
"description":
...
以上文字在我的JSON文本中反复出现。我正在努力为此建立每一个结果:
" simples":[],"描述"
到目前为止,我已经制作了这个正则表达式:
\"simples\":{(?:.*v(?:|=)|(?:.*)?)},\"description\"
但结果是从我的第一个"simples"
到最后一个"description"
切断了所有内容。
正则表达新手在这里。
提前致谢
答案 0 :(得分:3)
我建议解析JSON,替换值,然后重新对其进行字符串化
var obj = JSON.parse(json);
obj.simples = [];
json = JSON.stringify(obj);
使用正则表达式是纯疯狂
答案 1 :(得分:-1)
不要使用Regex来解析JSON;使用JSON解析器。
以下是使用JSON.Net执行此操作的方法,假设包含simples
的对象是结果列表的一部分:
JArray array = JArray.Parse(json);
foreach (JObject obj in array)
{
obj["simples"].Parent.Remove();
}
json = array.ToString();
如果您的JSON更复杂(即“简单”可能出现在JSON中的多个级别),那么您将需要递归搜索来查找和删除它。 This answer有一个帮助器方法,可以在JSON中的任何位置按名称查找特定属性,并返回所有出现的列表。获得事件列表后,您可以循环访问它们并将其删除,如上所示。