您将如何使用javascript解析此内容?
我无法通过使用javascript从以下记录中成功获取用户id。我有一种感觉,这是一个json字符串,但它根本不是我的json方式您将如何使用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('
[{"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中选择的内容后,我得到了上面的语句……我将尝试通过追加括号来添加括号,看看是否有效。