如何在vue.js应用程序中访问外部json文件对象


73

如何在vue.js应用程序中访问JSON对象我是新手

import json from './json/data.json'

JSON文件已加载,现在我必须访问其中的对象


3
您是否要显示从JSON到HTML模板的数据
Vamsi Krishna,

是的,我想以html格式显示
Haroon Aslam

您在使用ES6吗?如果是,则“从'./json/data.json'导入json”将起作用
BEJGAM SHIVA PRASAD

使用v-for指令
Haroon Aslam

不,我没有使用es6,但是我已通过json导入,现在我必须显示json数据
Haroon Aslam

Answers:


120

只需将导入分配给数据属性

<script>
      import json from './json/data.json'
      export default{
          data(){
              return{
                  myJson: json
              }
          }
      }
</script>

然后使用以下方法遍历myJson模板中的属性v-for

<template>
    <div>
        <div v-for="data in myJson">{{data}}</div>
    </div>
</template>

注意

如果要导入的对象是静态的,即不变,那么将其分配给data属性将没有意义,因为它不需要是反应性的。

Vue会将data选项中的所有属性转换为吸气剂/设定剂,以使这些属性具有反应性。因此,对于将不会更改的数据设置吸气剂/设置器来说,这是不必要的,也不会产生开销。请参阅深度反应性

因此,您可以如下创建自定义选项:

<script>
          import MY_JSON from './json/data.json'
          export default{
              //custom option named myJson
                 myJson: MY_JSON
          }
    </script>

然后使用以下命令遍历模板中的custom选项$options

<template>
        <div>
            <div v-for="data in $options.myJson">{{data}}</div>
        </div>
    </template>

@HaroonAslam那么你想要什么?
Vamsi Krishna

@HaroonAslam显示您的json数据,因此帮助您变得更加容易
Vamsi Krishna


1
在伟大的详细$options办法,我已经使用了created()非反应性的数据-这是更好
香港

什么是根目录?
mathtick

12

如果您的文件如下所示:

[
    {
        "firstname": "toto",
        "lastname": "titi"
    },
    {
        "firstname": "toto2",
        "lastname": "titi2"
    },
]

你可以做:

import json from './json/data.json';
// ....
json.forEach(x => { console.log(x.firstname, x.lastname); });

它是多数组形式
Haroon Aslam

它显示数据,但不能使用索引值访问字符串形式,但是我可以使用索引在控制台中访问它们
Haroon Aslam

@HaroonAslam您应该使用一直尝试使用json对象的方式来更新您的问题。
smarber '17


0

我最近开始使用Vue JS,JSON Schema进行项目。我正在尝试从Vue应用程序中的JSON模式文件访问嵌套的JSON对象。我尝试了以下代码,现在可以在不同的Vue模板标签内加载不同的JSON对象。在脚本标签中添加以下代码

import  {JsonObject1name, JsonObject2name} from 'your Json file path';

现在,您可以在导出默认部分的数据部分中访问JsonObject1,2名称,如下所示:

data: () => ({ 
  
  schema: JsonObject1name,
  schema1: JsonObject2name,   
  
  model: {} 
}),

现在,您可以根据需要在Vue模板中加载schema,schema1数据。例如,请参见以下代码:

      <SchemaForm id="unique name representing your Json object1" class="form"  v-model="model" :schema="schema" :components="components">
      </SchemaForm>  

      <SchemaForm id="unique name representing your Json object2" class="form" v-model="model" :schema="schema1" :components="components">
      </SchemaForm>

SchemaForm是@ formSchema / native库的本地变量名称。我已经通过不同CSS选项卡中的表单实现了不同JSON对象的数据。

我希望这个答案对某人有帮助。如有任何问题,我可以帮忙。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.