您将如何使用javascript解析此内容?

您将如何使用javascript解析此内容?,javascript,json,Javascript,Json,我无法通过使用javascript从以下记录中成功获取用户id。我有一种感觉,这是一个json字符串,但它根本不是我的json方式 [{"columns":["id","user_id","task","priority"],"values":[[1,1,"Do some stuff",0]]}] 这是在使用sql.js(用于从sqlite数据库检索数据)后产生的: $(function(){ var xhr = new XMLHttpRequest(); xhr.open('

我无法通过使用javascript从以下记录中成功获取用户id。我有一种感觉,这是一个json字符串,但它根本不是我的json方式

[{"columns":["id","user_id","task","priority"],"values":[[1,1,"Do some stuff",0]]}]
这是在使用sql.js(用于从sqlite数据库检索数据)后产生的:

$(function(){
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'db/sqlite.db', true);
    xhr.responseType = 'arraybuffer';

    xhr.onload = function(e) {
            var uInt8Array = new Uint8Array(this.response);
            var db = new SQL.Database(uInt8Array);
            var contents = db.exec("SELECT * FROM users");

            //
            var tasks = db.exec("SELECT * FROM tasks WHERE user_id=1");

            var json = JSON.parse(tasks);
            //console.log(json.columns[1].task);

            //var json = JSON.parse(tasks);

            document.getElementById('result').innerHTML = json.columns[0].task;

    };
    xhr.send();
});

您的数据格式不正确。一个合适的
JSON
对象应该分别以“{”和“}”开头和结尾

它应该是: { “列”:[“id”、“用户id”、“任务”、“优先级”], “价值观”:[ [1,1,“做点什么”,0] ] } 请注意,您给出的数据周围有一对额外的方括号

如果无法对数据结构进行更改,请注意它是一个数组,因此,请将其视为JS数组,而不是尝试将其解析为JSON(事实并非如此)

选项1:如果您被迫使用JSON:

var json = JSON.parse(tasks[0]);
document.getElementById('result').innerHTML = json.columns[2]; // this will return "tasks"
// to fetch "Do some stuff" : json.values[json.columns.indexOf("tasks")];
选项2:将其视为JS数组:

//var json = JSON.parse(tasks);  Simply leave this line commented
document.getElementById('result').innerHTML = tasks[0].columns[0].task;

呃,这看起来像是一种可怕的返回数据的方式。但如果这是你必须处理的问题:

var arr = [{"columns":["id","user_id","task","priority"],"values":[[1,1,"Do some stuff",0]]}];

var obj = arr[0];
console.log(obj);

var idx = false;

for( var i in obj.columns ){
  if( obj.columns[i] == 'task' ){
    idx = i;
    break;
  }
}

var task = obj.values[0][idx];
console.log(task);
[…]
表示数组。
{…}
指示一个对象


抛出一堆
console.log
s,查看不同点的变量。你也许可以稍微考虑一下,然后想出一个更好的解决方案。

解析完我从db中选择的内容后,我得到了上面的语句……我将尝试通过追加括号来添加括号,看看是否有效。