URLにGET変数として渡す必要がある「深い」JSON文字列があります。 jQuery.param
使用して符号化する際parse decodeURIComponent Pythonを使用したJSON文字列
{
"meta": {
"prune": true,
"returnFields": ["gf", "gh", "gh", "rt"],
"orient": "split"
},
"indicators": [{
"type": "beta",
"computeOn": "gf",
"parameters": {
"timeperiod": 5,
"nbdevup": 2,
"nbdevdn": 2,
"matype": 0
}
}, {
"type": "alpha",
"computeOn": "gf",
"parameters": {
"timeperiod": 30
}
}]
};
が、結果は以下のとおりである:それは、次のように見えるだけのシリアル化されたを使用している場合
var recursiveDecoded = decodeURIComponent(jQuery.param(body));
console.log(recursiveDecoded);
meta[prune]=true&meta[returnFields][]=gf&meta[returnFields][]=gh&meta[returnFields][]=gh&meta[returnFields][]=rt&meta[orient]=split&indicators[0][type]=beta&indicators[0][computeOn]=gf&indicators[0][parameters][timeperiod]=5&indicators[0][parameters][nbdevup]=2&indicators[0][parameters][nbdevdn]=2&indicators[0][parameters][matype]=0&indicators[1][type]=alpha&indicators[1][computeOn]=gf&indicators[1][parameters][timeperiod]=30
次にデコードされ
var recursiveEncoded = jQuery.param(body);
console.log(recursiveEncoded);
meta%5Bprune%5D=true&meta%5BreturnFields%5D%5B%5D=gf&meta%5BreturnFields%5D%5B%5D=gh&meta%5BreturnFields%5D%5B%5D=gh&meta%5BreturnFields%5D%5B%5D=rt&meta%5Borient%5D=split&indicators%5B0%5D%5Btype%5D=beta&indicators%5B0%5D%5BcomputeOn%5D=gf&indicators%5B0%5D%5Bparameters%5D%5Btimeperiod%5D=5&indicators%5B0%5D%5Bparameters%5D%5Bnbdevup%5D=2&indicators%5B0%5D%5Bparameters%5D%5Bnbdevdn%5D=2&indicators%5B0%5D%5Bparameters%5D%5Bmatype%5D=0&indicators%5B1%5D%5Btype%5D=alpha&indicators%5B1%5D%5BcomputeOn%5D=gf&indicators%5B1%5D%5Bparameters%5D%5Btimeperiod%5D=30
サーバー上の文字列結果は、文字列をキー値ペアのキーとして残ります。
"query": {
"{\"meta\":{\"prune\":true,\"returnFields\":[\"gf\",\"gh\",\"gh\",\"rt\"],\"orient\":\"split\"},\"indicators\":[{\"type\":\"beta\",\"computeOn\":\"gf\",\"parameters\":{\"timeperiod\":5,\"nbdevup\":2,\"nbdevdn\":2,\"matype\":0}},{\"type\":\"alpha\",\"computeOn\":\"gf\",\"parameters\":{\"timeperiod\":30}}]}": ""
},
バックエンドの処理はPythonで行われます。上記の結果を元のオブジェクトに似ているdict
に変換するモジュールはありますか?
あなたは、おそらくJSONとして送信して、Pythonでオブジェクトにそれをデシリアライズしたほうが良いと思います。そんなに簡単ではない。 – haliphax
要件はGET要求として送信することです。私はすでにJSON文字列を扱うことができるPOSTリクエストを行っています。 –
'$ .param()'を使わずにGETメソッドを使ってjQueryでオブジェクトを送ることができます。あなたのデータがサーバー上でJSONとして終わることを確認したら、AJAXリクエストの結果として、あなたはうまくいくはずです。最悪のシナリオでは、 'dataType'を' 'json''に設定する必要があります。 – PHPglue