【问题标题】:How can I convert JSON format file to JSON object?如何将 JSON 格式文件转换为 JSON 对象?
【发布时间】:2013-11-19 10:08:30
【问题描述】:

我使用 dojo request.get 读取 JSON 格式的 txt 文件,但无法将其转换为 JSON 对象。 “datagrid.txt”存储了一些数据:

[
{"col1":"val1", "col2":"val2", "col3":"val3"},
{"col1":"val1", "col2":"val2", "col3":"val3"},
{"col1":"val1", "col2":"val2", "col3":"val3"}
]

请求的客户端代码如下:

require(['dojo/_base/lang', 'dojox/grid/DataGrid', 'dojo/data/ItemFileWriteStore', 'dojo/dom', 'dojo/request', 'dojo/domReady!'],
function(lang, DataGrid, ItemFileWriteStore, dom, request){ 

request.get("datagrid.txt",{
       // Parse data from JSON to a JavaScript object
        handleAs: "json"
    }
).then(
    function(text){          
        var datalist = JSON.stringify(text);            
        for(var i = 0, l = 16; i < l; i++){
            console.log( datalist[i] );             
        }
            });

console.log 以字符串形式显示内容(例如“[”,“{”),而不是我期望的数组({“col1”:“val1”,“col2”:“val2”,“col3 ":"val3"}),我可以用它来填充 dojo 数据网格数据存储。

【问题讨论】:

  • JSON.stringify(text) 替换为JSON.parse(text)

标签: javascript json dojo


【解决方案1】:

Dojo 可以自行处理 JSON 格式。 Official docs

【讨论】:

    【解决方案2】:

    我认为您的问题在于您编写 datagrid.txt 的方式以及您稍后尝试读取数据的样式。

    这是我的解决方案:

    require(['dojo/_base/lang', 'dojox/grid/DataGrid', 'dojo/data/ItemFileWriteStore',
    'dojo/dom', 'dojo/request', 'dojo/domReady!'],
    
    function(lang, DataGrid, ItemFileWriteStore, dom, request){ 
    request.get("datagrid.txt",{
       // Parse data from JSON to a JavaScript object
        handleAs: "json"
    }
    ).then(
    function(text){          
        var datalist = [];
         dojo.forEach(text,function(thisText,i){
         //add each single Object from the datagrid.txt to datagrid-array
         datalist.push(thisText);  
         //alert the newly added item in datagrid
         console.log(datalist);             
          });
       });
    

    我认为这应该可以解决您的问题。 问候,米里亚姆

    【讨论】:

    • 问题:“identifier”、“label”、“items”固有的关键字是否让Javascript/Dojo理解?为什么他们应该在那里?
    • 您好!您可以按照自己的方式编写它,或者当您想进一步将它用于 ITemFileReadStor 时,像我一样进行操作。因此,标识符、标签和项目是必要的:您可以在此处阅读更多内容:dojotoolkit.org/reference-guide/1.9/quickstart/data/… - 尝试仅使用 datalist 获取 cosole.log(datalist)。
    • 好的,现在我了解了 ITemFileReadStore 预期的数据格式。事实上,我第一次使用您的代码时,它可以在 Dojo 数据网格上显示数据。我手动更改了 datagrid.txt。由于 datagrid.txt 也是由另一个 perl 脚本生成的,我更改了脚本以生成正确的 datagrid.txt,但 Dojo 数据网格不再正常工作,并且出现“意外令牌 i”错误,但我没有第一次得到。 “i”也是一个不需要声明的dojo-known循环迭代器吗?
    • 我怀疑错误可能是由于 perl 生成的 datagrid.txt。但是,我与您的数据进行了比较,并没有发现任何重要的区别。我再检查一下。
    • 我将所有键都包含在引号中,错误消失了。感谢您的解决方案。
    猜你喜欢
    • 2017-10-25
    • 1970-01-01
    • 2017-03-29
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多