Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript解析JSON以构建HTML字符串_Javascript_Jquery_Json - Fatal编程技术网

使用JavaScript解析JSON以构建HTML字符串

使用JavaScript解析JSON以构建HTML字符串,javascript,jquery,json,Javascript,Jquery,Json,我目前已经构建了一个API,它发布对象的JSON字符串。JSON的一个简单示例是: [ { "id" : 0, "name" : "test SAMPLE Att1 name", "attributes" : [ { "id" : -1, "name" : "AttKey1", "value" : "AttValue1" }, { "id" : -1, "name" : "AttKey2", "value" : "AttValue2

我目前已经构建了一个API,它发布对象的JSON字符串。JSON的一个简单示例是:

[ {
  "id" : 0,
  "name" : "test SAMPLE Att1 name",
  "attributes" : [ {
    "id" : -1,
    "name" : "AttKey1",
    "value" : "AttValue1"
  }, {
    "id" : -1,
    "name" : "AttKey2",
    "value" : "AttValue2"
  } ]
} ]
我的问题在于我的客户端代码:

function loadSamples() {
  $("#content").children().remove();
  $.getJSON("/api/samples", function (data) {
    $.each(data, function (key, val) {
      $("<tr><td>" + val.id + "</td><td>" + val.name + "</td><td>" + val.attributes + "</td>" +
        "</tr>").appendTo("#content");
    });
    initCallbacks();
  });
}
函数loadSamples(){
$(“#内容”).children().remove();
$.getJSON(“/api/samples”,函数(数据){
$。每个(数据、函数(键、值){
$(“”+val.id+“”+val.name+“”+val.attributes+“”)+
)。附于(“#内容”);
});
initCallbacks();
});
}
我正在迭代我发送的每个示例(在本例中只有一个示例,并将字段值附加到HTML字符串中。如何迭代
属性
,并将每个
属性.key
属性.value
附加到字符串中

当前问题的图片:


使用另一个循环,迭代所有属性,以“property:value”格式构建属性数组,然后将连接的数组附加到HTML:

$.each(data, function (key, val) {
  var attributes = [];
  for (var prop in val.attributes) {
    var value = val.attributes[prop];
    attributes.push(prop + ": " + value);
  }
  $("<tr><td>" + val.id + "</td><td>" + val.name +
    "</td><td>" + attributes.join(",") + "</td>" + "</tr>").appendTo("#content");
});
$。每个(数据、函数(键、值){
var属性=[];
for(val.attributes中的var prop){
var值=val.attributes[prop];
属性推送(prop+“:”+值);
}
$(“”+val.id+“”+val.name+
“+属性。连接(“,”+“+”)。附加到(“#内容”);
});

使用另一个循环,迭代所有属性,以“property:value”格式构建属性数组,然后将连接的数组附加到HTML:

$.each(data, function (key, val) {
  var attributes = [];
  for (var prop in val.attributes) {
    var value = val.attributes[prop];
    attributes.push(prop + ": " + value);
  }
  $("<tr><td>" + val.id + "</td><td>" + val.name +
    "</td><td>" + attributes.join(",") + "</td>" + "</tr>").appendTo("#content");
});
$。每个(数据、函数(键、值){
var属性=[];
for(val.attributes中的var prop){
var值=val.attributes[prop];
属性推送(prop+“:”+值);
}
$(“”+val.id+“”+val.name+
“+属性。连接(“,”+“+”)。附加到(“#内容”);
});

如果您觉得很无聊,可以将对象序列化回JSON字符串,如下所示:

... + JSON.stringify(val.attributes) + ...

它是递归的,具有标准语法(JSON),完全不需要任何支持函数或附加代码。

如果您觉得很无聊,可以将对象序列化回JSON字符串,如下所示:

... + JSON.stringify(val.attributes) + ...

它是递归的,具有标准语法(JSON),完全不需要任何支持函数或附加代码。

您可以尝试使用此代码而不是
val.attributes

$.map(val.attributes, function(item){
   return item.key + ':' +item.value;
}).join(',')

您可以尝试使用此代码而不是
val.attributes

$.map(val.attributes, function(item){
   return item.key + ':' +item.value;
}).join(',')

你想如何格式化它?val.attributes.reduce(函数(pv,v){return(pv?pv+',':pv)+v.name+'='+v.value;}','');为什么不使用JSON.stringify?你想如何格式化它?val.attributes.reduce(函数(pv,v){return(pv?pv+',':pv)+v+'='+v.name+'='+v.value;}',);为什么不使用JSON.stringify??