Javascript 解析JSON字符串并显示它

Javascript 解析JSON字符串并显示它,javascript,json,r,d3.js,Javascript,Json,R,D3.js,我是一个完全的D3初学者(在JS方面几乎没有经验)。我有以下几行代码: <script type='text/javascript'> data ='{"mpg":21,"cyl":6,"disp":160,"hp":110,"drat":3.9,"wt":2.62,"qsec":16.46,"vs":0,"am":1,"gear":4,"carb":4,"_row":"Mazda RX4"},{"mpg":21,"cyl":6,"disp":160,"hp":110,"drat":

我是一个完全的D3初学者(在JS方面几乎没有经验)。我有以下几行代码:

<script type='text/javascript'> data ='{"mpg":21,"cyl":6,"disp":160,"hp":110,"drat":3.9,"wt":2.62,"qsec":16.46,"vs":0,"am":1,"gear":4,"carb":4,"_row":"Mazda RX4"},{"mpg":21,"cyl":6,"disp":160,"hp":110,"drat":3.9,"wt":2.875,"qsec":17.02,"vs":0,"am":1,"gear":4,"carb":4,"_row":"Mazda RX4 Wag"}';</script>

<script type="text/javascript">
 d3.select("body").append("div").text(JSON.parse(data));
</script>
数据本身通过R:

<!--begin.rcode results="asis", echo=FALSE, warning=FALSE, message=FALSE
library(RJSONIO)
  out <- paste("<script type='text/javascript'> data ='", gsub("\\[|\\]", "",jsonlite::toJSON(mtcars[1:2,])), "';</script>", sep="")
  cat(out)
end.rcode-->

这将导致在第一个代码块(数据)中找到JSON字符串

谁都知道问题出在哪里


谢谢

var数据
不是有效的Json。
您应该在末尾添加
[]

var data ='[{"mpg":21,"cyl":6,"disp":160,"hp":110,"drat":3.9,"wt":2.62,"qsec":16.46,"vs":0,"am":1,"gear":4,"carb":4,"_row":"Mazda RX4"},{"mpg":21,"cyl":6,"disp":160,"hp":110,"drat":3.9,"wt":2.875,"qsec":17.02,"vs":0,"am":1,"gear":4,"carb":4,"_row":"Mazda RX4 Wag"}]';

另外,使用
JSON.parse(data)
您将在
data
中有2个
对象
,并且它不是一个字符串。

看起来您在那里有两个对象。。我的建议是:将json字符串粘贴到web上的任何“在线json验证器”中。。(Google)并告诉您它是否有效以及问题在哪里Array可能会解决如果您想查看
JSON.parse()
返回的内容,您可以使用
console.log()
而不是将其打印为文本。这样,您就可以在浏览器的JS控制台中检查对象了。好的,谢谢。我对R中的所有JSON包(rjson、jsonlite、RJSONIO)感到有点困惑。它们处理json的方式似乎都有点不同。我现在使用
jsonlite::serializeJSON(mtcars[1:2,])
。它提供了一个有效的JSON对象。
var data ='[{"mpg":21,"cyl":6,"disp":160,"hp":110,"drat":3.9,"wt":2.62,"qsec":16.46,"vs":0,"am":1,"gear":4,"carb":4,"_row":"Mazda RX4"},{"mpg":21,"cyl":6,"disp":160,"hp":110,"drat":3.9,"wt":2.875,"qsec":17.02,"vs":0,"am":1,"gear":4,"carb":4,"_row":"Mazda RX4 Wag"}]';