Regex替换JSON结构
本文关键字:结构 JSON 替换 Regex | 更新日期: 2023-09-27 17:51:14
我有这样的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文本中反复出现。我试图建立每一个结果:
到目前为止,我已经制作了这个regex:"简单":[],"描述"
'"simples'":{(?:.*v(?:|=)|(?:.*)?)},'"description'"
但是结果是从我的第一个"simples"
切到最后一个"description"
。这里是正则表达式新手。
Thanks in advance
我建议解析JSON,替换值,然后重新字符串化它
var obj = JSON.parse(json);
obj.simples = [];
json = JSON.stringify(obj);
用regexp来做这个简直是疯了
不要使用正则表达式解析JSON;使用JSON解析器。
下面是如何使用JSON做到这一点。Net,假设包含simples
的对象是平面结果列表的一部分:
JArray array = JArray.Parse(json);
foreach (JObject obj in array)
{
obj["simples"].Parent.Remove();
}
json = array.ToString();
如果您的JSON更复杂(例如:"简单"可以出现在JSON中的多个级别),那么您将需要递归搜索来查找和删除它。这个答案有一个助手方法,它可以在JSON中的任何位置按名称查找特定属性,并返回所有出现的列表。一旦有了出现的列表,就可以循环遍历它们并删除它们,如上所示。