gpt4 book ai didi

javascript - 将多条 JSON 记录读取到数组中

转载 作者:行者123 更新时间:2023-11-28 05:21:02 27 4
gpt4 key购买 nike

我对 JS 编程非常陌生,所以这可能是一个愚蠢的问题,但经过几个小时的搜索,我还没有从网上找到可行的解决方案。

我有多个 JSON feed。服务器为每个 url 提供一个多层 JSON 记录,如下所示(数据是虚构的测试数据):

  • http://address/ci/c/1 给出:

    {
    “LGICUS01操作响应”:{
    “ca”:{
    "ca_phone_mobile": "07799 123456",
    "ca_request_id": "01ICUS",
    “ca_return_code”:0,
    "ca_dob": "1950 年 7 月 11 日",
    "ca_last_name": "潘迪",
    “ca_num_policies”:0,
    "ca_phone_home": "01962 811234",
    "ca_email_address": "A.Pandy@beebhouse.com",
    "ca_house_name": "",
    "ca_policy_data": "",
    “ca_customer_num”:1,
    "ca_first_name": "安德鲁",
    "ca_house_num": "34",
    “ca_邮政编码”:“PI101OO”
    }
    }
    }

  • http://address/ci/c/2 给出:

    {
    “LGICUS01操作响应”:{
    “ca”:{
    "ca_phone_mobile": "123",
    "ca_request_id": "01ICUS",
    “ca_return_code”:0,
    "ca_dob": "1965.09.30",
    "ca_last_name": "特蕾西",
    “ca_num_policies”:0,
    "ca_phone_home": "",
    "ca_email_address": "REFROOM@TBHOLDINGS.COM",
    "ca_house_name": "特雷西岛",
    "ca_policy_data": "",
    “ca_customer_num”:2,
    "ca_first_name": "斯科特",
    "ca_house_num": "",
    "ca_postcode": "TB14TV"
    }
    }
    }

等等。现在我已经设法使用 ajax 读取 JSON 记录,但是在 getCurrentJson 函数之外传递该信息数组时遇到严重问题。最佳情况是省略前两个参数,以便有一个用户信息数组,以便以后以“标准方式”进行操作,如下所示:

{
"rows":[
{"ca_customer_num":1", "ca_first_name:"Andrew",...}
{"ca_customer_num":2", "ca_first_name:"Scott",...}
...
]
}

这是代码:

<!DOCTYPE html>
<html>
<head>
<title>JSON test</title>
<script src="jquery.js" type="text/javascript"></script>
<script>
var myjson = [];
for (i = 1; i < 11; i++) {
getCurrentJson(i);
console.log(myjson[i].LGICUS01OperationResponse.ca.ca_phone_mobile);
}

function getCurrentJson(current){
$.ajax({
dataType: "json",
url: "http://192.49.208.193:9081/ci/c/"+current,
success: function(data){
myjson[current] = data;
console.log(myjson[current]);
console.log(myjson[current].LGICUS01OperationResponse.ca.ca_phone_mobile);
}
});
}
</script>
</head>
<body>
</body>
</html>

现在 ajax 函数内的 console.log 输出可以打印对象信息和“ca_phone_mobile”编号,但 for 循环中的第一个控制台输出显示:“Uncaught TypeError: Cannot read property 'LGICUS01OperationResponse' of undefined(...) ”。我需要一些 toString 数据类型转换或类似的转换吗?我还尝试将 myjson 数组传递给 getCurrentJson 函数,但没有成功。

最佳答案

注意 AJAX 请求是异步的

PS:下面的部分示例(另请注意,并非所有请求都必须成功,有些请求可能会失败并且永远不会完成完成==总计)

var myjson = [];
var total = 10;
var done = 0;

for (i = 1; i <= total; i++) {
getCurrentJson(i);
// at this point AJAX request haven't finished (most likely)
//console.log(myjson[i].LGICUS01OperationResponse.ca.ca_phone_mobile);
}

function allDone() {
console.log(myjson);
}

function getCurrentJson(current){
$.ajax({
dataType: "json",
url: "http://192.49.208.193:9081/ci/c/"+current,
success: function(data){
myjson[current] = data;
done++;
console.log(myjson[current]);
console.log(myjson[current].LGICUS01OperationResponse.ca.ca_phone_mobile);
if (done == total) {
allDone();
}
}
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于javascript - 将多条 JSON 记录读取到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40554283/

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