[英]How to convert json string to array of custom object in json2typescript NPM node module in TypeScript
I want to convert a JSON string to array of custom object using json2typescript NPM module.我想使用 json2typescript NPM 模块将 JSON 字符串转换为自定义对象数组。 I have written the following code.
我已经编写了以下代码。
export class ValidationSummary {
constructor(private column1: string, private column2: string, private column3: string,
private column4: string, private column5: string, private column6: string,
private column7: string) {
}
public get $column1(): string {
return this.column1;
}
public set $column1(value: string) {
this.column1 = value;
}
/** all getter and setter methods */
}
I am writing the code in a TypeScript class.我正在 TypeScript 类中编写代码。
import {JsonConvert} from 'json2typescript';
const jsonConvert: JsonConvert = new JsonConvert();
const valSummary: ValidationSummary[] = jsonConvert.deserializeObject(jsonString, ValidationSummary[]);
I am getting the following error message.我收到以下错误消息。
An element access expression should take an argument.
元素访问表达式应该带一个参数。
My json string is like this.我的json字符串是这样的。
[
{
"column1": "Data-1",
"column2": "Data-2",
"column3": "Data-3",
"column4": "Data-4",
"column5": "Data-5",
"column6": "Data-6",
"column7": "Data-7"
},
{
"column1": "Data-11",
"column2": "Data-12",
"column3": "Data-13",
"column4": "Data-14",
"column5": "Data-15",
"column6": "Data-16",
"column7": "Data-17"
},
{
"column1": "Data-31",
"column2": "Data-32",
"column3": "Data-33",
"column4": "Data-34",
"column5": "Data-35",
"column6": "Data-36",
"column7": "Data-37"
}
]
I want the object array in the following form.我想要以下形式的对象数组。
const valSummary: ValidationSummary[] =
jsonConvert.deserializeObject(jsonString, ValidationSummary[]);
As I see the second argument should be prototype for deserialized values, eg, instead正如我所见,第二个参数应该是反序列化值的原型,例如,
jsonConvert.deserializeObject(jsonString, ValidationSummary[]);
try o试试吧
const arrOfObjects = [
{
"column1": "Data-1",
/ * .... */
}
];
const convertor = (o) => jsonConvert.deserializeObject(o, ValidationSummary)
const valSummary: ValidationSummary[] = arrOfObjects.map(convertor);
Well, may be that implementation will be more helpful...好吧,也许实施会更有帮助......
import { JsonObject, JsonProperty, JsonConvert } from "json2typescript";
import example from "./example.js";
const arrOfObjects = JSON.parse(example);
@JsonObject('ValidationSummary')
class ValidationSummary {
@JsonProperty("column1", String)
private column1: string = undefined;
public get $column1(): string {
return this.column1;
}
public set $column1(value: string) {
this.column1 = value;
}
}
const jsonConvert: JsonConvert = new JsonConvert();
function convertor(o: any) {
// @ts-ignore
return jsonConvert.deserializeObject(o, ValidationSummary);
}
const valSummary: ValidationSummary[] = arrOfObjects.map(convertor);
// [ ValidationSummary { column1: 'Data-1' },
// ValidationSummary { column1: 'Data-11' },
// ValidationSummary { column1: 'Data-31' } ]
A simple way of deserializing the JSON into the ValidationSummary
is:将 JSON 反序列化为
ValidationSummary
一种简单方法是:
const jsonParsed = JSON.parse(jsonString);
const valSummaryArray = jsonParsed.map((a: any) => this.jsonConvert.deserializeObject(a, ValidationSummary));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.