在本文中,我们将详细介绍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?
- angular – 如何使用离子2打字稿从本地JSON获取数据到HTML页面
- Angular4:如何访问本地json?
- DynamoDB JSON 还是标准 JSON?
- Fastjson, Gson, org.json.JSON三者对于JSONObject及JSONArray的判断
amp-html – 仅支持外部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?
解决方法
没有办法让AMP运行时执行您所要求的操作,src属性是必需的,并且必须是https URL.
angular – 如何使用离子2打字稿从本地JSON获取数据到HTML页面
{ "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?
在Angular2中,您可以在其中有一个文件夹/ data /和一个json文件,并且可以在localhost:4200 / data /
something.json中访问它。
在Angular4中不再可能。
任何想法如何使其起作用?
DynamoDB JSON 还是标准 JSON?
DynamoDB JSON 的主要好处是您可以显式设置数据类型,这对于 DynamoDB 使用的内部表示很有用,除此之外我没有看到它们中的任何一个。我也不知道有任何其他 AWS 服务使用相同的 DynamoDB-JSON 风格。
根据我的经验,DynamoDB-JSON 使用起来更烦人,因为它需要额外的数据转换。
我更喜欢将常规 JSON 与 JSON-schema 结合使用以强制执行数据类型和格式。
- 还是将其作为字符串处理就足够了?
这在某些用例中可能是有利的,但如果您使用 DynamoDB-JSON 结构,您可以在字段上设置额外的索引,如果需要,甚至可以创建属性级权限。
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的判断的相关知识,请在本站寻找。
本文标签: