Javascript 如何将JSON格式文件转换为JSON对象?

Javascript 如何将JSON格式文件转换为JSON对象?,javascript,json,dojo,Javascript,Json,Dojo,我使用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/_b

我使用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] );             
        }
            });
require(['dojo/_base/lang','dojox/grid/DataGrid','dojo/data/ItemFileWriteStore','dojo/dom','dojo/request','dojo/domReady!'],
函数(lang、DataGrid、ItemFileWriteStore、dom、request){
request.get(“datagrid.txt”{
//将数据从JSON解析为JavaScript对象
handleAs:“json”
}
).那么(
函数(文本){
var datalist=JSON.stringify(文本);
对于(变量i=0,l=16;i

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

dojo可以自己处理JSON格式。

我认为您的问题在于编写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);             
      });
   });
我想这应该能解决你的问题。
Miriam将
JSON.stringify(text)
替换为
JSON.parse(text)
。问题:“标识符”、“标签”、“项目”是否Javascript/Dojo要理解的固有关键字?为什么它们应该存在?您好!您可以按您的方式编写,或者当您想将其用于ITemFileReadStor时,请像我一样执行。因此,标识符、标签和项是必需的:您可以在此处阅读更多:-尝试获取cosole.log(datalist)仅使用datalist.OK,现在我了解了ITemFileReadStore的预期数据格式。事实上,我第一次使用您的代码时,它在Dojo datagrid上显示了数据。我手动更改了datagrid.txt。由于datagrid.txt也是由另一个perl脚本生成的,所以我更改了脚本以生成正确的datagrid.txt,但Dojo datagrid不再正常工作,我出现了“意外令牌I”错误,这是我第一次没有遇到的错误。“I”也是一个不需要声明的dojo已知循环迭代器?我怀疑错误可能是由perl生成的datagrid.txt造成的。但是,我与您的数据进行了比较,没有发现任何重要差异。我将再次检查。我将所有键都包含在引号中,错误消失。感谢您提供的解决方案。