【问题标题】:assigning a item from a .json file to a variable in javascript将 .json 文件中的项目分配给 javascript 中的变量
【发布时间】:2014-01-29 00:15:10
【问题描述】:

我有一个data1.json 文件

[ { “出价”:“4569749”, }, { “出价”:“466759”, }, { “出价”:“4561149”, }, ]

我想在另一个 abdv.js 文件中调用这个 .json 文件并将 BID 分配给一个变量数组

var R1;

R1 = ['4569749', '466759', '4561149']的值 我该怎么做??

.html 文件(请注意:我只指定了与此问题相关的部分,并删除了其他部分)

代码如下:

<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="abdv.js"></script>
<script>

    loadABCD();

   </script>

abvd.js

代码如下:

function loadABCD()
    {


  var R1 = [];
$.get('data1.json', function (data) {
    var parsedArr = JSON.parse(data),
    i = 0, l = parsedArr.length;
    for (i; i < l; i++) {
        R1.push(parsedArr[i].BID);
    }
});




for(k=0;k<R1.length;k++)
 {
    document.write(R1);
}   
        // i will use R1 for later processing another function

    //  for(k=0; k<R1.length; k++)
    //  {
    //  obj = loadLevel4Obj(R1[k]);
    //  scene.add(obj);
    //    } 




    }

我还需要帮助将 .json 文件读入 javascript JSON 对象。我怀疑我的json文件格式是否正确。我需要在 html 文件中指定任何其他与 jquery 相关的库吗?如何检查 BID 是否正确存储在变量 R1 中。

【问题讨论】:

    标签: javascript ajax json html


    【解决方案1】:

    假设您已将 json 文件读入 javascript JSON 对象(您是否也需要帮助?)

    var R1 = new Array();    
    
    for(var i= 0 ; i< myJSON.length; i++){
       R1.push(myJSON[i].BID);
    }
    

    [编辑]

    您的 document.write 发生在您完成任何阅读之前。

    删除它。

    在 $.get() 的匿名回调中放置一个 console.log;

    让它看起来像这样:

    $.get('data1.json', function (data) {
        var parsedArr = JSON.parse(data),
    
        for (i = 0; i < parsedArr.length; i++) {
            R1.push(parsedArr[i].BID);
        }
    
    
        for(i=0; i< R1.length; i++)
          console.log("item " + i + " = " + R1[i]);
    });
    

    如果你的 json 文件真的像这样:

    [ { "BID" : "4569749", }, { "BID" : "466759", }, { "BID" : "4561149", }, ]
    

    然后需要修复它以删除对象内多余的逗号。它应该是这样的:

    [ { "BID" : "4569749" }, { "BID" : "466759" }, { "BID" : "4561149" } ]
    

    我没有对此进行测试,但它看起来应该对我有用。

    【讨论】:

    • for..in 循环抛出数组?您将在此循环中获得来自 Array.prototype 的所有共享属性。
    • 我无法让它工作:我会更具体地解决我的问题
    • 你做错了一堆小事......我会编辑我的答案。
    【解决方案2】:
    var R1 = [];
    $.get('file.json', function (data) {
        var parsedArr = JSON.parse(data),
        i = 0, l = parsedArr.length;
        for (i; i < l; i++) {
            R1.push(parsedArr[i].BID);
        }
    });
    

    【讨论】:

    • OP 没有提到 jQuery...请编辑您的答案以删除上述参考。
    【解决方案3】:

    用ajax获取json文件,然后处理并分配给R1:

    function ajaxGetJson(url, callback){
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                callback(eval(xmlhttp.responseText));
            }
        }
    
        xmlhttp.open("GET", url, true);
        xmlhttp.send();
    }
    
    var R1;
    ajaxGetJson('file.json', function(obj){
       R1 = obj.map(function(item){ return item.BID });
    });
    

    一些cmets:

    • 我使用 eval 而不是 JSON.parse 因为您的 .json 可能不是 strict json 格式(如您的示例)

    • 由于问题有标签html5,你的浏览器肯定支持.map方法

    干杯,来自玻利维亚拉巴斯

    【讨论】:

    • @Pinal 为什么?他的 Json 文件不是 json 严格格式,所以使用 JSON.parse 会给你解析错误。如果在这种情况下明智地使用 Eval,则可以使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多