私が解決しようとしている非常にユニークな問題があります。
次のシリアル化されたクエリ文字列があります。
a=a2&b.c=c2&b.d.e=e2&b.d.f=f2
次のオブジェクト object にデシリアライズされます:
{
a: "a2",
b.c: "c2",
b.d.e: "e2",
b.d.f: "f2"
}
次のパーサーを使用します (フラットなオブジェクトでうまく機能します!)
function parse(string){
string =
'{"' + //root
string
.replace(/&/g, '","') //replace '&' with ','
.replace(/=/g,'":"')+ //replace '=' with ':'\
'"}'; //close root
return JSON.parse(string,function(key, value){ //handle URI issues
var ret;
if(key===""){ //null key means that we have something wrong with the encoding, probably escaped shit
ret = value;
}
else{
ret = decodeURIComponent(value); //decode escaped stuff
}
return ret;
});
}
.
これは、次のように、キー内の表記を表す多次元オブジェクトに解析する必要があります。
{
a:"a2",
b:{
c: "c2",
d:{
e:"e2",
f:"f2"
}
}
}
ここでの助けは素晴らしいでしょう。私はこれを過去数時間の形に再帰しようとしてきましたが、私の脳はバラバラになり、解決策に喜びはありません.
N 次元の JavaScript オブジェクトを URI に解析してから JavaSCript オブジェクトに戻す別の方法 (2 つの関数) がある場合、私はすべて耳にします。