如何使用JQuery读取JSON结果中的Fields:{}内容?
我对这整个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
function getContent(order) { $.getJSON("query.json", function(data) { $.each(data.result, function(i, item) { var grid = ''; for (var i=0; i < item.length; i++){ CAMPO = item[i]; ...
如果你是通过jQuery.ajax
或类似的方式加载数据并且它以正确的MIME类型返回(或者你告诉jQuery.ajax
你得到的是JSON),那么你在success
回调中收到的将是反序列化的对象(不再是JSON,而是JSON描述的对象)。 既然如此,您只需访问对象的属性,例如:
$.ajax({ // ... success: function(data) { var fields = data.result[0][0].fields; } });
data
是指向对象的变量,它有一个result
属性,它只是一个只有一个条目的数组(因此,entry [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
。
如果您有一个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 } ] ] }
第一:假设您将JSON对象分配给变量“myobject”。 那你可以做
var myfields = myobject.result[0][0].fields;
希望这个代码示例能帮助您理解jQuery / JSON的事情。
我已将示例JSON对象作为数组。 然后通过读取JSON的键/值对来填充小HTML。
工作实例: http : //jsfiddle.net/ylokesh/WC84k/
Interesting Posts