Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.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_Html_Json - Fatal编程技术网

Javascript 如何使用JSON数据重新拼合HTML文本

Javascript 如何使用JSON数据重新拼合HTML文本,javascript,html,json,Javascript,Html,Json,从api接收数据并转换为JSON格式,但每次尝试更改HTML中的选定元素时,都会得到未定义或对象Obejct 我尝试了JSON.parse/JSON.stringify。我试过innerHTML、innerText、textContent。我试过打圈 HTML <p id="lang">C++</p> 需要段落标记中的C++来改变数据中的java。如果Jquery能让这变得更容易,我也希望知道它是如何工作的。因为您介绍的数据模型将书籍作为一个数组,所以您需要这样做 da

从api接收数据并转换为JSON格式,但每次尝试更改HTML中的选定元素时,都会得到未定义或对象Obejct

我尝试了JSON.parse/JSON.stringify。我试过innerHTML、innerText、textContent。我试过打圈

HTML
<p id="lang">C++</p>

需要段落标记中的C++来改变数据中的java。如果Jquery能让这变得更容易,我也希望知道它是如何工作的。

因为您介绍的数据模型将
书籍作为一个数组,所以您需要这样做

data.book[0].language
0
是要显示的任何书籍的索引

data = {
   "book": [

      {
         "id":"01",
         "language": "Java",
         "edition": "third",
         "author": "Herbert Schildt"
      }
   ]
};

language.innerHTML = data.book[0].language;

这是行不通的,因为书是一组对象,而不是单个对象。所以您需要使用
data.book[0]。语言

另外,这里不需要使用
JSON.stringify
,如果您从API接收到JSON字符串,您应该使用
JSON.parse

下面是代码正确运行的示例:

来自

stringify()方法将JavaScript对象或值转换为JSON字符串

因此,您的代码似乎与您声明的意图背道而驰

let data = {
  "book": [
    {
       "id":"01",
       "language": "Java",
       "edition": "third",
       "author": "Herbert Schildt"
    }
  ]
};
之后,数据已经包含一个对象

data = JSON.stringify(data);
现在,
数据
包含一个字符串。因此,
data.book
自然会产生一个未定义的值

但是,如果您要以实际JSON的形式接收数据,例如

let dataJSON = '{"book":[{"id":"01","language":"Java","edition":"third","author":"Herbert Schildt"}]}';
然后,您可以使用以下方法提取语言值:

let data = JSON.parse(dataJSON);
let bookLanguage = data.book[0].language;
language.innerText = bookLanguage;

请注意
一书
中的数组下标。因为在您的示例中,它包含一个对象数组,所以您需要确保在其中下标。

解析时,
data.book[0]。language
,包含
language
属性的对象在数组中。
data
不是JSON。它是一个物体。JSON是一种用于存储或传递数据的文本格式。
let data = JSON.parse(dataJSON);
let bookLanguage = data.book[0].language;
language.innerText = bookLanguage;