javascript - 如何使用 jquery 将 json 普遍解析为 block ?

标签 javascript jquery html json

如何通用解析json从html block [data-json Item]中获取,并将key插入其中?

我的 html,包含 data-jsonItem (json - key,key2) 和 data-jsonValue (json - subObject):

<span data-jsonItem="key1" data-jsonValue="val"></span>
<span data-jsonItem="key1" data-jsonValue="val2"></span>
<span data-jsonItem="key2" data-jsonValue="val"></span>
<span data-jsonItem="key2" data-jsonValue="val2"></span>

我的javascript

<script>
function jsonUPDATE() {
  var URL = "/json.json";
  $.getJSON(URL, function(data){
    $.each(data, function (item, value) {   
        var jsonItem = "key1";
        if (item == jsonItem) {
            $.each(value, function (i, object) {
                $.each(object, function (subI, subObject) {
                    $("[data-jsonValue='"+subI+"']").html(subObject);
                });
            });
        }
    });
  });
}
</script>

json:

{
    "key1": [
        {
            "val": 0, 
            "val2": 0, 
            "val3": 0, 
        }
    ], 
    "key2": [
        {
            "val": 0, 
            "val2": 0, 
            "val3": 0, 
        }
    ]
}

最佳答案

您可以通过遍历所有 span 元素并直接从对象中检索数据来提高逻辑效率并使其更加简洁,而不是遍历对象数组中的所有项目,基于 span 上的 data 属性。试试这个:

var data = {
  "key1": [{
    "val": 1,
    "val2": 2,
    "val3": 3,
  }],
  "key2": [{
    "val": 4,
    "val2": 5,
    "val3": 6,
  }]
}

// in your AJAX callback:
$('span').html(function() {
  var $span = $(this)
  return data[$span.data('jsonitem')][0][$span.data('jsonvalue')];
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span data-jsonItem="key1" data-jsonValue="val"></span>
<span data-jsonItem="key1" data-jsonValue="val2"></span>
<span data-jsonItem="key2" data-jsonValue="val"></span>
<span data-jsonItem="key2" data-jsonValue="val2"></span>

请注意,我更改了对象中的 valX 值以使此逻辑的效果更清晰。

关于javascript - 如何使用 jquery 将 json 普遍解析为 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57003129/

相关文章:

javascript - 使用 jQuery .click 关闭 slider

javascript - Flowplayer加载和卸载问题

javascript - 两个表的连接

javascript - 为数组中的每个对象添加属性

javascript - 调用 Jquery 对话框并传递消息字符串

jquery - z-index 在某处被覆盖

javascript - Bootstrap 模态字段未扩展

html - 单选按钮的标签也可以选择吗?

javascript - 编辑按钮不起作用,请帮助如何使编辑按钮编辑值

JavaScript、PHP、Bootstrap - 怀疑来自模式的错误 - 无法让 PHP 文件从 JavaScript 文件接收值