【问题标题】:How to use JSON to create output如何使用 JSON 创建输出
【发布时间】:2018-10-03 17:33:50
【问题描述】:

我有一个结构如下的 json 文件:

[
    {
    "style":"h1",
    "content":"this is h1"
    },
    {
      "style":"p",
      "content":"this is a long paragraphe "
    },
    {
      "style":"img",
      "content":"image1.jpg"
    },
    {
    "style":"h2",
    "content":"this is h2"
    },
    {
    "style":"h3",
    "content":"this is h3"
    },
    {
    "style":"h1",
    "content":"this is h1 number 2"
    },
    {
      "style":"p",
      "content":"this is a long paragraphe 2 "
    },
    {
      "style":"img",
      "content":"image2.jpg"
    },
    {
    "style":"h2",
    "content":"this is h2 number 2"
    },
    {
    "style":"h3",
    "content":"this is h3 number 2"
    }  
]

而且我需要它在 JavaScript 中像这样输出:

这是h1 这是h2 这是h3 这是一个很长的段落 图像1.jpg 这是 h1 数字 2 这是 h2 2 号 这是h3 2号 这是一个很长的段落 2 图像2.jpg

【问题讨论】:

  • 欢迎来到 Stack Overflow!请使用tour 并通读help center,尤其是How do I ask a good question? 做你的研究,search 以获取有关 SO 的相关主题,然后试一试。 如果您在进行更多研究和搜索后遇到困难并且无法摆脱困境,请发布您的尝试minimal reproducible example,并具体说明您遇到的问题。人们会很乐意提供帮助。祝你好运!
  • 当您提出问题时,文本区域右侧有一个橙色的大如何格式化框,其中包含有用的信息。还有一个完整的格式化辅助工具栏。还有一个 [?] 按钮提供格式化帮助。 并且一个预览区域位于文本区域和发布您的问题按钮之间(这样您就必须滚动过去才能找到该按钮,以鼓励您查看它)显示您的帖子发布时的样子。使您的帖子清晰,并证明您花时间这样做,可以提高您获得好答案的机会。
  • (我已经为你修好了。)
  • @Luca:如果你的意思是输入 cmets,我没有。我有书签。 :-D
  • 我的意思是编辑,我的 cmets 也有一个 GitHub Gist ;)

标签: javascript json node.js


【解决方案1】:

Array.prototype.forEach() 完成这项工作。也遍历列表。

var data=[
  {"style":"h1","content":"this is h1"},
  {"style":"p","content":"this is a long paragraphe "}
];
data.forEach(function(elt){
  console.log(elt.content);
});
for (var i=0; i<data.length; i++){
  console.log(data[i].content);
}

如果您的 json 文件尚未获取,请使用 ajax 请求获取它并按上述方法继续。 (ajax请求简介:https://www.w3schools.com/xml/ajax_intro.asp

// creates an Ajax object to fetch the content of a file
var ajax=new XMLHttpRequest();
ajax.open("GET","data.json",false);
ajax.send();

// dataString contains the .json file as a string
var dataString=ajax.response;

// we parse it (ie convert it into a javascript object)
var dataObject=JSON.parse(dataString);

// and we iterate through it
for (var i=0; i<dataObject.length; i++){
  console.log(dataObject[i].content);
}

【讨论】:

    【解决方案2】:

    我假设您正在使用 jQuery,并且您正在尝试获取文件并仅打印没有 html 标记的“内容”。

    <div id="output">
        <!-- here we'll write the output-->
    </div>
    <script>
        $.get('your_json_file.json',function(data){
            var data = JSON.parse(data); //may not be neccesary, it depends on how you output your json
            $.each(data, function(index, value){
                //here you get each object of the array. You only want the content
                $('#output').append('<p>' + value.content + '</p>');
            });
        });
    </script>
    

    【讨论】:

    • 是的,我只想要内容,但我想要它取决于 json 中“样式”的值,我希望 'h1' 和 'h2' 和 'h3' 首先出现位置是,然后是'p'和'img'......
    • 但是你真的要松开标签信息(无论是p、h1、h2...)吗?
    • 还有问题 nº2:您无法正确订购这些标签。代码如何知道“这是 h2 编号 2”出现在第一个 &lt;p&gt; 之后?也许你需要添加一些“块”变量:` { "block": 1, "style":"h1", "content":"this is h1" }, { "block": 2, "style":" p", "content":"this is a long paragraphe " },` 所以您可以按 1) 块 2) 样式对它们进行排序
    • 我想保持 json 的相同结构,我想按 h1、h2、h3 然后 p、img 的顺序显示它们
    • 是的,但这不是您在原始问题中向我们展示的顺序。例如,在h1 之后有一个h3。根据你在这里提出的顺序,这将是所有h1的第一个,所有h2的后,等等
    猜你喜欢
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多