JavaScript:keyとvalueをダブルクォーテーションを持たないJSON文字列をJSONオブジェクトに変換する方法
3996 ワード
関連する問題に出会って、二日間をかけて解決しました.本当にありがたいです.以下のようにまとめてみます.この問題に遭遇した私たちはもっと早く解決方法を見つけられますように.
var JsonAr= [{col:TO CHAR(HZRQ、'YYYYMM')、type:=、values:201909]、{col:RQ、type:=、values:201909]]
それをJSONの対象に変えたいです.JSON文字列をJSONオブジェクトに変換するには、JSON.parse()の方法が必要ですが、上記のようなkey名にはダブルクォーテーションの付いていないJSON文字列は、JSON.parse()を使って解析するとエラーが発生し、解析できません.これは厄介な問題になりました.だから、できるだけ規則正しい予防を使ってもいいです.多くの場合は問題にならないです.以下のコードはキーにダブルクォーテーションを付けます.
jsonAr=jsonArver.replace(//////////////\"*)?([a-zA-Z 0-9]+)(?:::''''''*)?)/g,“\"$1\")];);
jsonAr=jsonar.replace(/"/"g,")/","","",",",",",").replace(/"/",").replace(/"/","),",",""),",","),",",",",",""),",",",",",",",",",",",",",""",",",",
consolie.log("jsonAr=",eval(jsonar));またはvar Json=eval('++JsonAr+')を使用する.
ケース 以上のjson文字列に対して、最も愚かな方法でvalue値をダブルクォーテーションを追加する必要があります.
var JsonAr= [{col:TO CHAR(HZRQ、'YYYYMM')、type:=、values:201909]、{col:RQ、type:=、values:201909]]
それをJSONの対象に変えたいです.JSON文字列をJSONオブジェクトに変換するには、JSON.parse()の方法が必要ですが、上記のようなkey名にはダブルクォーテーションの付いていないJSON文字列は、JSON.parse()を使って解析するとエラーが発生し、解析できません.これは厄介な問題になりました.だから、できるだけ規則正しい予防を使ってもいいです.多くの場合は問題にならないです.以下のコードはキーにダブルクォーテーションを付けます.
jsonAr=jsonArver.replace(//////////////\"*)?([a-zA-Z 0-9]+)(?:::''''''*)?)/g,“\"$1\")];);
:jsonArr.replace(/(\s*?{\s*?|\s*?,\s*?)(['"])?([a-zA-Z0-9]+)(['"])?:/g, '$1"$3":');
もちろん、値の結果には特殊な記号が存在しなくても、上の正規表現で置き換えることができますが、私が今直面している問題に対しては、value値には_=>、'が含まれています.などの特殊な記号がありますが、より良い正規表現を見つけられませんでした.jsonAr=jsonar.replace(/"/"g,")/","","",",",",",").replace(/"/",").replace(/"/","),",",""),",","),",",",",",""),",",",",",",",",",",",",",""",",",",
consolie.log("jsonAr=",eval(jsonar));またはvar Json=eval('++JsonAr+')を使用する.
ケース
var jsonArr2 = [{
"Color": IPS,
"SkuId": 1365289,
"Size": 27 }, { "Color": 21:9 IPS , "SkuId": 1742140, "Size": 29 }, { "Color": 17 (TN,5:4 ), "SkuId": 1032147, "Size": 17 }];
内容に「:」がついていますので、(\w+):
、エラー処理"21:9 IPS "
[{,]\s*(\w+):
、エラー処理"17 (TN,5:4 )"