我对这整个JSON和JQuery很新鲜,我正在尝试阅读来自Delphi datasnap的JSON结构,例如:
{"result":[[{"type":"VOMesas.TMesas","id":1,"fields":{ "FUsers":1,"FEnclosing":0,"FClientName":"","FCode":100,"FStatus":1,"FTotalValue":128.25}}]]}
我如何用JQuery阅读它,更具体地说是Fields:{...}内容?
编辑:
这是我试图做的功能
function getContent(order) {
$.getJSON("query.json",
function(data) {
$.each(data.result, function(i, item) {
var grid = '<table border="1">';
for (var i=0; i < item.length; i++){
CAMPO = item[i];
...
答案 0 :(得分:1)
如果你是通过jQuery.ajax
或类似的方式加载数据,并且它返回的是正确的MIME类型(或者你告诉jQuery.ajax
你得到的是JSON),那么你是什么在success
回调中接收将是一个反序列化的对象(不再是JSON,而是JSON描述的对象)。在这种情况下,您只需访问对象的属性,例如:
$.ajax({
// ...
success: function(data) {
var fields = data.result[0][0].fields;
}
});
data
是指向该对象的变量,该变量具有result
属性,该属性是一个只有一个条目的数组(因此,条目[0]
),这本身就是另一个数组一个条目(因此,再次输入[0]
),这是一个具有名为fields
的属性的对象。图示地:
{ // <== data
"result": [ // <== data.result
[ // <== data.result[0]
{ // <== data.result[0][0]
"type": "VOMesas.TMesas",
"id": 1,
"fields": { // <== data.result[0][0].fields
"FUsers": 1,
"FEnclosing": 0,
"FClientName": "",
"FCode": 100,
"FStatus": 1,
"FTotalValue": 128.25
}
}
]
]
}
如果您正在以其他方式检索数据并且它仍然是字符串,则可以使用jQuery.parseJSON
对其进行反序列化:
var data = $.parseJSON(str);
...然后执行上述操作以访问fields
。
答案 1 :(得分:1)
如果您有一串JSON,只需使用JSON.parse
将其转换为Javascript对象。
var datasnap = '{"result":[[{"type":"VOMesas.TMesas","id":1,"fields": FUsers":1,"FEnclosing:0,"FClientName":"","FCode":100,"FStatus":1,"FTotalValue":128.25}}]]}';
var data = JSON.parse(datasnap);
var fields = data['result'][0]['fields'];
但是,请注意,您粘贴到问题中的JSON无效:
{
"result": [
[
{
"type": "VOMesas.TMesas",
"id": 1,
"fields": FUsers":1,"FEnclosing: 0, //unbalanced "
"FClientName": "",
"FCode": 100,
"FStatus": 1,
"FTotalValue": 128.25
}
} //unbalanced }
]
]
}
答案 2 :(得分:0)
首先:我们假设您已将JSON对象分配给变量“myobject”。然后就可以了
var myfields = myobject.result[0][0].fields;
答案 3 :(得分:0)
希望这段代码示例能帮助您理解jQuery / JSON的内容。
我已将示例JSON对象作为数组。然后通过读取JSON的键/值对来填充小HTML。