javascript - 为什么在js文件中用json声明变量而不是读取json?

标签 javascript json leaflet geojson leaflet.markercluster

最近我一直在使用 leaflets,目前正在研究几个插件。

我见过的几个插件(包括 Leaflet.markercluster )使用 json 来绘制点,而不是使用实际的流或 json 文件,程序员包含一个 javascript .js 文件,其中使用 json 流设置变量。因此,包含 json 数据的 js 文件如下所示:

var data = [
    {"loc":[41.575330,13.102411], "title":"aquamarine"},
    {"loc":[41.575730,13.002411], "title":"black"},
    {"loc":[41.807149,13.162994], "title":"blue"},
    {"loc":[41.507149,13.172994], "title":"chocolate"}
]

我一直在使用其他类型的 JavaScript 图表,其中大多数读取并处理 json 流。

如果我创建返回 json 的服务,这些插件似乎将无法工作。

为什么不使用 json 而不是包含一个用 json 流设置变量的 js 文件?

我不是 javascript 专家,但我发现生成 json 比生成包含 json 的 javascript 文件更容易。

最佳答案

你的概念是错误的。

第一。 JavaScript 作为一种语言有它自己的语法,因此,如果您有一个函数接收 JSON 对象作为参数,并向它传递一个数字或字符串,那么当您尝试访问某些属性时,它会抛出错误。例如。

function myjson (obj) {
    console.log(obj.prop)
}

myjson(34); //wrong
myjson("{prop: 123}") //wrong
myjson({prop: 123}) //Good, will print 123

现在,假设您有一些脚本,许多已在 HTML 文件中建立索引的 .js 文件,例如

<script src="/mycode.js"> </script>
<script src="/myapp.js"> </script>

并且您想要添加一些数据,例如您为绘图点显示的数据;那么您必须通过两种方式包含它,将其放入 .js 文件中或通过 AJAX 调用从服务中获取它。

如果您将其添加到 .js 文件中,您将可以直接从代码中访问它们,如下所示

var data = [
    {"loc":[41.575330,13.102411], "title":"aquamarine"},
    {"loc":[41.575730,13.002411], "title":"black"},
    {"loc":[41.807149,13.162994], "title":"blue"},
    {"loc":[41.507149,13.172994], "title":"chocolate"}
]

console.log(data)

如果您将其放入 .json 文件中

/mydata.json

[
    {"loc":[41.575330,13.102411], "title":"aquamarine"},
    {"loc":[41.575730,13.002411], "title":"black"},
    {"loc":[41.807149,13.162994], "title":"blue"},
    {"loc":[41.507149,13.172994], "title":"chocolate"}
]

您必须自己获取并解析数据

fetch("/mydata.json").then(async data => {
    var myjson = await data.text();
    myjson = JSON.parse(myjson);
    console.log(myjson) //A Javascript object
    console.log(myjson[1]) //The first element
})

关于javascript - 为什么在js文件中用json声明变量而不是读取json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52563506/

相关文章:

javascript - 在开发过程中处理多个js文件

javascript - React - Survey.js ...调查项目的编辑按钮不起作用

javascript - 为什么我的 geojson 不能像我想的那样工作?

javascript - HTML多选如果使用jquery选择第一项,如何取消全选

javascript - 在 JQuery 中隐藏和显示 ul 中的特定元素

jquery - 在express服务器上使用jquery发布json

java - 使用java将java字符串转换为geojson

javascript - 仅使用方法名称的字符串调用对象的方法

javascript - LeafletJS,无法将弹出窗口绑定(bind)到第二个标记

css - 在移动或单击 map 之前,Leaflet 不会在 IE/Safari 中显示 Control.extend 数据