Angular / Typescript导入带有“默认”的JSON前缀-如何停止

时间:2019-11-19 11:27:39

标签: json angular typescript ionic-framework capacitor

我有一个Ionic v5.0.0 / Capacitor v1.1.1 / Angular v8 / Typescript v3.4.3,我正在导入一个JSON文件,以便稍后使用json2typescript解析为对象。导入文件并在控制台上打印后,它将读取:数据文件为-> {“ default”:{“ dataId”:1}}

“默认”前缀在哪里,为什么?我在解析此文件时遇到问题,而以前的版本将其读取为:数据文件为-> {“ dataId”:1}

最终我正在使用json2typescript,但由于以下原因而失败:

错误->错误:JsonConvert中的致命错误。无法将JSON对象映射到“默认”类,因为已定义的JSON属性“ dataId”不存在:

Class property: 
    dataId

JSON property: 
    dataId

如果有更好的方法将JSON文件动态解析为对象(由许多数组和子数组组成),我欢迎您提出建议-我们将不胜感激!

` 要导入的本地文件(1.1.1.json):

{         “ dataId”:1 }

--------

Parser code snippet:

import * as mockJSONData from '../../../assets/test-data/1.1.1.json';
import { JsonObject, JsonProperty } from 'json2typescript';
import { JsonConvert, OperationMode, ValueCheckingMode } from 'json2typescript';
...
const jsonData = mockJSONData;
console.log('data file is ->' + JSON.stringify(jsonData));
...
const jsonConvert: JsonConvert = new JsonConvert;
jsonConvert.operationMode = OperationMode.LOGGING; // print some debug data
jsonConvert.ignorePrimitiveChecks = false; // don't allow assigning number to string etc.
jsonConvert.valueCheckingMode = ValueCheckingMode.DISALLOW_NULL;
const dataModel: DataModel =
    jsonConvert.deserializeObject(jsonData, DataModel);
--------

DataModel:
@JsonObject('default')
export class DataModel {

    enter code here
    @JsonProperty('dataId', Number)
    dataId: number = undefined;
}
`

0 个答案:

没有答案