gpt4 book ai didi

javascript - Jquery 自动 json 命名

转载 作者:行者123 更新时间:2023-12-01 02:26:37 25 4
gpt4 key购买 nike

我的功能有问题:

function jsonToName(j){
try {

var obj = jQuery.parseJSON( j );

$.each(obj,function(z,x){
// if(jQuery.isPlainObject(x)){
if( (typeof x === "object") && (x !== null) ){

jsonToName(x);
}else{
$('[name="'+z+'"]').val(x);
}
});

}
catch (err) {
//error
}
}

我有很多字段文本、选择等,我需要将 json 解析为它们的值,但有时输入值是对象、数组或 json,我不知道如何转换这些值。

{
"id": 13,
"packages_id": 4,
"packages_price_id": 1,
"numer": "D4X9nU",
"property_types_id": null,
"user_id": 1,
"transaction_type": 1,
"property_type": 2,
"price": null,
"plot_additional": null,
"house_additional":"{\"aaa\":\"on\"}",
"commercial_additional": "",
"highlight_order": [],
"renew": [
{
"id": 15,
"property_id": 13,
"order_date": "2018-02-11T13:59:59+01:00",
"pay": false,
"price": 59,
"paymentKey": "GdUZ7gM1jMCKSaa61stNEmzAK9AHRoFHfA2",
"banners_price": null
}
]
}

你可以看到,我有一个更新值(对象)和house_additional(字符串json)。我尝试执行递归函数,但它不起作用。我的字段名称例如是:

<input name="numer" >
<input name="house_additional[aaa]" >
<input name="renew[pay]" >
<input name="some[some2][some3][some4][some5]" >

最佳答案

你不需要 jQuery,而且我不知道你为什么要解析这个 JSON,而不是需要删除一对引号 - 除此之外它是一个不需要解析的有效对象。下面你会发现一个可怕的黑客来填写你的输入值 - 你可以更改你的输入名称吗?或者也许使用数据属性?虽然这适用于您的前 3 个输入(“some”不在您的 JSON 中,我假设您希望任何嵌套的其他值在那里工作) - 但总的来说,这不是一个很好的方法 - 如果您必须这样做匹配你的值(value)观很麻烦,你的架构通常需要重新思考!

var j = 
{
"id": 13,
"packages_id": 4,
"packages_price_id": 1,
"numer": "D4X9nU",
"property_types_id": null,
"user_id": 1,
"transaction_type": 1,
"property_type": 2,
"price": null,
"plot_additional": null,
"house_additional":{"aaa":"on"},
"commercial_additional": "",
"highlight_order": [],
"renew": [
{
"id": 15,
"property_id": 13,
"order_date": "2018-02-11T13:59:59+01:00",
"pay": false,
"price": 59,
"paymentKey": "GdUZ7gM1jMCKSaa61stNEmzAK9AHRoFHfA2",
"banners_price": null
}
]
}

jsonToName(j);

function jsonToName(j){
var obj = j;
var inputs = document.getElementsByTagName('input');

for (var i=0; i < inputs.length;i++) {
console.log('running loop '+i)
var name = inputs[i].name;
name = name.replace(/]/g,'');
console.log('name is '+name)
var names = name.split('[')
var first = names[0]
var second = names[1]
if (j[first] && j[first][second]) {
inputs[i].value = j[first][second]
}
if (j[first] && !j[first][second]) {
inputs[i].value = j[first]
}
if (j[first] && j[first][0] && !j[first][second] && j[first][0][second] != undefined) {
inputs[i].value = j[first][0][second]
}
} // end loop
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="numer" >
<input name="house_additional[aaa]" >
<input name="renew[pay]" >
<input name="some[some2][some3][some4][some5]" >

关于javascript - Jquery 自动 json 命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48733285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com