JSONオブジェクトを表す文字列があるとします。別のシステム(たとえば、%param%)に置き換えられるパラメータがある可能性があるため、は無効です。 regexを使用して、 "true"と等しい既知のpropertyNameを持つすべてのオブジェクトを削除する必要があります。上記の例では正規表現を使用してJSONから特定のプロパティを持つオブジェクトを削除します
{
"someTopLevelProp": "value",
"arrayOfData": [
{
"firstPropIAlwaysKnow": "value",
"dontCareProp": $paramValue$,
"dontCareProp2": 2,
"flagWhichShouldIUse": true,
"somethingAtTheEnd": "value"
},
{
"absolutelyAnotherObject": %paramValue%
},
{
"firstPropIAlwaysKnow": "value",
"dontCareProp": "value",
"dontCareProp2": 2,
"flagWhichShouldIUse": false,
"somethingAtTheEnd": "value"
},
{
"firstPropIAlwaysKnow": "value",
"dontCareProp": "value",
"dontCareProp2": 2,
"flagWhichShouldIUse": true,
"somethingAtTheEnd": "value"
}
]
}
、私は常にオブジェクトが私は必要なフラグを含めることができることを意味し、「firstPropIAlwaysKnow」を持っています。その後、他のプロパティが存在する可能性があります。しかし、ここで最も重要なのは "flagWhichShouldIUsing"です。これは、このオブジェクトを削除する必要があることを意味します(値が 'true'の場合のみ)。結果として私は受け取る必要があります:
{
"someTopLevelProp": "value",
"arrayOfData": [
{
"absolutelyAnotherObject": %paramValue%
},
{
"firstPropIAlwaysKnow": "value",
"dontCareProp": "value",
"dontCareProp2": 2,
"flagWhichShouldIUse": false,
"somethingAtTheEnd": "value"
}
]
}
私の正規表現の知識は十分ではないので、親切にコミュニティの助けを求めてください。
P.S. JSONを正規表現で解析することについては言及しないでください。狂ったり、間違ったりすることはありません。
ANSWER:私はそのようなことをする正規表現を作っています。ここでお手伝いしようとしてくれた皆さん、ありがとうたぶんそれは誰かにとって役に立ちます。
/{\s+?"firstPropIAlwaysKnow": "value"[^{}]+?(?:\{[^}]*\}[^}]+?)*[^}]+?"flagWhichShouldIUse": true[^}]+?},?/gi
これは実際にはJSONパーサーそれは 'JSON.parse'をスローさせる特定の構文を認識しています。最大の問題は入れ子です。 –
おそらく無効な部分は明確に定義されていますか?たとえば、何らかの無効なものが、あるプロパティの値としてjson内の '%...%'式から来ていることが分かっているとします。 –