形式が不明な未知のJSONを解析しようとしています。だから、私はそれにアクセスするための鍵を知らない。 JSONのすべてのキーにアクセスし、HTMLを使用して画面上のすべてのキーと値を出力したいと考えています。だから私はJSONのすべてのキーにアクセスするための再帰的な関数を作り、変数名htmlを使ってキーを印刷しました。JSONを動的に解析し、入力チェックボックスを使ってhtmlのキー値を出力し、選択したキーの新しいJSONを取得します。
JSON文字列:: コードhere`s
{
"FetchDetails": {
"TransactionDetails": {
"ServiceName": "Airtel Mobile Bill Postpaid",
"officeID": "209",
"BillAmount": "931.00",
"ConsumerName": "Chetan Kumar Yadav",
"consumerKeysValues": "9352423664",
"partPaymentAllow": "1",
"partPaymentType": "Both",
"lookUpId": "6163298",
"officeCodeValue": "RATNC011"
},
"BillDetails": [{
"LableName": "Amount Before Due Date",
"LableValue": "931.00"
}, {
"LableName": "Due Date",
"LableValue": "NA"
}, {
"LableName": "Mobile Number",
"LableValue": "9352423664"
}, {
"LableName": "Amount After Due Date",
"LableValue": "931.00"
}, {
"LableName": "Bill Date",
"LableValue": "NA"
}, {
"LableName": "Consumer Name",
"LableValue": "Chetan Kumar Yadav"
}, {
"LableName": "Bill Cycle",
"LableValue": "NA"
}, {
"LableName": "Bill Number",
"LableValue": "NA"
}, {
"LableName": "Account Number",
"LableValue": "1116231291"
}]
}
}
相続人はこの後
function scan(info) {
var sub_root = [];
if (info instanceof Object) {
for (k in info) {
if (info.hasOwnProperty(k)) {
console.log('scanning property ' + k);
if (info[k] instanceof Object) {
me += "<div class='root'> <div class='sub_root'> <input class='node' name='sub_root[" + k + "]' value='" + k + "' type='checkbox' />" + k;
console.log(k);
counter++;
scan(info[k]);
me += "</div>";
me += "</div>";
} else {
me += "<div class='json_check' ><input class='node' name='sub_root[" + y + "] [" + k + "]' value='" + k + "' type='checkbox' />" + k + ": " + info[k] + " </div>";
scan(info[k]);
counter++;
}
}
}
} else {
console.log('found value : ' + info);
}
}
解析されたJSON内のすべてのキーにアクセスするためのコードを、私は、JSONの全てのキーにアクセスすることができていますネストされたフォームのすべてのノードをチェックボックスで表示し、ノード/キーを選択します。 Here`sスクリーンショット:
[解決すべき問題] は今一番下に、私はそれをクリックしたときに、私は彼らの親でチェック値のJSONを形成したい、送信ボタンをしていますノード。キーで値を確認する場合と同様に、親キーを取得する必要があります。 例えば:私はTransactionDetails中のServiceNameとofficeIDを選択している、とBillDetailsでいくつかの配列値、私は は、このJSON形式を取得し、HTMLオブジェクトを横断するには、この
{
"FetchDetails": {
"TransactionDetails": {
"ServiceName": "Airtel Mobile Bill Postpaid",
"officeID": "209"
},
"BillDetails": [{
"LableName": "Amount Before Due Date",
"LableValue": "931.00"
}, {
"LableName": "Due Date",
"LableValue": "NA"
}, {
"LableName": "Account Number",
"LableValue": "1116231291"
}]
}
}
[EDITED]のようなものを取得する必要があります私はこのコードを書いています:
$('#btn_createservice').on('click', function() {
var solid = '{';
var input = $('input').is(':checked');
if(input){
input = $('input');
}
$('.node:checked').each(function(index) {
var parentEls = $(this).closest(input)
.map(function() {
solid += this.value;
return this.value;
})
.get()
.join(", ");
console.log(parentEls);
});
solid += '}';
$(".submit_json").html(solid);
});
あなたはどんな問題を抱えていますか? '$(this).parents("。node ")'を使ってすべてのコンテナ要素を取得できるはずです。次に、 'name'属性からJSONキーを取得できます。実際には、それらを 'data- *'属性に入れることをお勧めしますので、名前を解析する必要はありません。 – Barmar
@BarmarチェックされたキーのJSON形式を取得できません。私は '$(this).closest()'を使って要素を取得しています。私は親ノードで要素を取得しますが、JSON形式を理解することはできません。 –
あなたのコードを修正してください。私たちはあなたのためにそれを書くつもりはありません。しかし、すべてのコンテナを取得するには '.closest()'ではなく '.parents()'を使う必要があります。ネストされたオブジェクトを作成するためにループします。 – Barmar