GVKun编程网logo

amp-html – 仅支持外部json.如何消耗本地json?

4

在本文中,我们将详细介绍amp-html–仅支持外部json.如何消耗本地json?的各个方面,同时,我们也将为您带来关于angular–如何使用离子2打字稿从本地JSON获取数据到HTML页面、An

在本文中,我们将详细介绍amp-html – 仅支持外部json.如何消耗本地json?的各个方面,同时,我们也将为您带来关于angular – 如何使用离子2打字稿从本地JSON获取数据到HTML页面、Angular4:如何访问本地json?、DynamoDB JSON 还是标准 JSON?、Fastjson, Gson, org.json.JSON三者对于JSONObject及JSONArray的判断的有用知识。

本文目录一览:

amp-html – 仅支持外部json.如何消耗本地json?

amp-html – 仅支持外部json.如何消耗本地json?

我正在尝试使用本地json组件,如下例所示:

<div>
  <amp-list layout=fill>
    <script type="application/json">
      {"items":[{"name":"John"},{"name":"Paul"},{"name":"George"},{"name":"Ringo"}]}
    </script>
    <template type="amp-mustache">
      <div>
        Beatles musician: {{name}}
      </div>
    </template>
  </amp-list>
</div>

我收到以下错误:

The mandatory attribute ‘src’ is missing in tag ‘amp-list’. Learn more.

似乎只支持外部json.

如何在AMP中使用本地(内联)json?

解决方法

如果在生成文档时json可用,则最好只在服务器端解析模板. AMP的原则之一是在适当的层进行工作,在您的情况下,在服务器上而不是在用户的浏览器中.

没有办法让AMP运行时执行您所要求的操作,src属性是必需的,并且必须是https URL.

angular – 如何使用离子2打字稿从本地JSON获取数据到HTML页面

angular – 如何使用离子2打字稿从本地JSON获取数据到HTML页面

我有这种类型的 JSON文件.
{
  "records": {
    "patients": {
      "day": "Today","details": [
        {
          "name":"Diab","stat":"Pending","phno":"8197246465","patNames":"Sandra Adams","tests": [
            {"name":"MCHC","result":"positive"}
          ]
        }
      ]
    }
  }
}

如何将每个密钥带入html页面或如何使用服务解析这个?

提前致谢.

您可以通过创建服务提供商来实现
import {Injectable} from '@angular/core';
import {Http,Response} from '@angular/http';
import 'rxjs/Rx';

@Injectable()
export class yourService {
    constructor(public http:Http) {}

getData() {
    return this.http.get("YOUR_PATH_TO_THE_JSON_FILE")
        .map((res:Response) => res.json().YOUR_JSON_HEADER); //records in this case
  }
}

在ts构造函数中定义服务并调用方法来解析数据

this.yourService.getData().subscribe((data) => {
  console.log("what is in the data ",data);
  this.myjsondata = data;
});

确保在app.module.ts中定义服务提供者

对于您的案例中的承诺,修改代码如下:
在您的服务中.

load() {
    console.log('json called');
    return new Promise(resolve => {
        this.http.get('assets/data/patient.json').map(response => {
            this.data = response.json();
            resolve(this.data);
        });
    });
}

在这里,您将获得数据并解决承诺.要在html中使用它,您必须按如下方式获取组件页面中的数据.

this.yourService.load().then((data) => {
      console.log("what is in the data ",data);
      this.patdata= data;
    });

您现在可以在HTML中使用patdata

<h1> {{patdata | json}} </h1>

Angular4:如何访问本地json?

Angular4:如何访问本地json?

在Angular2中,您可以在其中有一个文件夹/ data /和一个json文件,并且可以在localhost:4200 / data /
something.json中访问它。

在Angular4中不再可能。

任何想法如何使其起作用?

DynamoDB JSON 还是标准 JSON?

DynamoDB JSON 还是标准 JSON?

DynamoDB JSON 的主要好处是您可以显式设置数据类型,这对于 DynamoDB 使用的内部表示很有用,除此之外我没有看到它们中的任何一个。我也不知道有任何其他 AWS 服务使用相同的 DynamoDB-JSON 风格。

根据我的经验,DynamoDB-JSON 使用起来更烦人,因为它需要额外的数据转换。

我更喜欢将常规 JSON 与 JSON-schema 结合使用以强制执行数据类型和格式。

  • 还是将其作为字符串处理就足够了?

这在某些用例中可能是有利的,但如果您使用 DynamoDB-JSON 结构,您可以在字段上设置额外的索引,如果需要,甚至可以创建属性级权限。

Fastjson, Gson, org.json.JSON三者对于JSONObject及JSONArray的判断

Fastjson, Gson, org.json.JSON三者对于JSONObject及JSONArray的判断

1.Fastjson

我们通常在已知格式的情况下直接使用JSONObject,JSONArray,但是如果遇到需要判断格式呢?

       try{
            Object object = JSON.parse(a);
            if (object instanceof JSONObject){
                //JSONObject
            }
            if (object instanceof JSONArray){
                //JSONArray
            }
        }catch (com.alibaba.fastjson.JSONException e){
            //非JSON字符串
        }

2.org.json.JSON

直接使用JSON库做解析的情况不多,但是这里也稍微写一下

log.info(JSON.parse(jsonStr).getClass().getName());
try {
    Object json = new JSONTokener(jsonStr).nextValue();
   log.info( json.getClass().toString());
//            json.toString();
    if(json instanceof JSONObject){
        log.info("is JSONObject");
        JSONObject jsonObject = (JSONObject)json;
        //further actions on jsonObjects
        //...
    }else if (json instanceof JSONArray){
        log.info("is JSONArray");
        JSONArray jsonArray = (JSONArray)json;
        //further actions on jsonArray
        //...
    }
}catch (Exception e){
    e.printstacktrace();
}

3.GSON,也是蛮强大的一个库,没有依赖包,只是在反射到Map的使用上有点麻烦。

GSON里面最有意思的就是JsonPrimitive,原始JSON。

先给代码

String str = "";
JsonParser jsonParser = new JsonParser();
try{
    JsonElement jsonElement = jsonParser.parse(str);
    log.info("jsonElement "+jsonElement.getClass().getName());
    if (jsonElement.isJsonObject()){
        //JsonObject
        log.info(jsonElement.getAsJsonObject().get("aa").getAsstring());
    }
    if (jsonElement.isJsonArray()){
        //JsonArray
        log.info(jsonElement.getAsJsonArray().get(0).getAsJsonObject().get("aa").getAsstring());
    }
    if (jsonElement.isJsonNull()){
        //空字符串
        log.info(jsonElement.getAsstring());
    }
    if (jsonElement.isJsonPrimitive()){
        log.info(jsonElement.getAsstring());
    }
}catch (Exception e){
    //非法
//            e.printstacktrace();
    log.info("非法 "+e.getMessage());
}

可知,GSON中定义了四个JSON类型,分别是JSONObject,JSONArray,JSONPrimitive,JSONNull。

但是官方对JSON的严格定义是{}为JSONObject,[]为JSONArray。

所以只用JsonElement jsonElement = jsonParser.parse(str);能正常解析的字符串并不意味着是一个合法的JSON,必须满足

jsonElement.isJsonObject()或者jsonElement.isJsonArray()。

另说一个题外话,关于对jsonElement.getAsJsonPrimitive()方法的理解。

JsonPrimitive即时指JSON value的原始数据,包含三种类型,数字,双引号包裹的字符串,布尔。

所以JsonPrimitive.toString得到的不是实际的值,而是JSON中的:后面的完整内容,需要再做一次getAs。

例如

String str = "{\"aa\":\"aa\"}";
JsonElement jsonElement = jsonParser.parse(str);
log.info(jsonElement.getAsJsonObject().get("aa").getAsstring());
str = "{\"aa\":true}";
jsonElement = jsonParser.parse(str);
jsonElement.getAsJsonObject().get("aa").getAsBoolean();
str = "{\"aa\":1.2}";
jsonElement.getAsJsonObject().get("aa").getAsBigDecimal();

所以Gson还有一个好处就是自带转换为java常规类型。

关于amp-html – 仅支持外部json.如何消耗本地json?的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于angular – 如何使用离子2打字稿从本地JSON获取数据到HTML页面、Angular4:如何访问本地json?、DynamoDB JSON 还是标准 JSON?、Fastjson, Gson, org.json.JSON三者对于JSONObject及JSONArray的判断的相关知识,请在本站寻找。

本文标签: