![](/img/trans.png)
[英]How to convert this string to JSON object in javascript/typescript?
[英]How to convert json string to array of custom object in json2typescript NPM node module in TypeScript
我想使用 json2typescript NPM 模塊將 JSON 字符串轉換為自定義對象數組。 我已經編寫了以下代碼。
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 */
}
我正在 TypeScript 類中編寫代碼。
import {JsonConvert} from 'json2typescript';
const jsonConvert: JsonConvert = new JsonConvert();
const valSummary: ValidationSummary[] = jsonConvert.deserializeObject(jsonString, ValidationSummary[]);
我收到以下錯誤消息。
元素訪問表達式應該帶一個參數。
我的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"
}
]
我想要以下形式的對象數組。
const valSummary: ValidationSummary[] =
jsonConvert.deserializeObject(jsonString, ValidationSummary[]);
正如我所見,第二個參數應該是反序列化值的原型,例如,
jsonConvert.deserializeObject(jsonString, ValidationSummary[]);
試試吧
const arrOfObjects = [
{
"column1": "Data-1",
/ * .... */
}
];
const convertor = (o) => jsonConvert.deserializeObject(o, ValidationSummary)
const valSummary: ValidationSummary[] = arrOfObjects.map(convertor);
好吧,也許實施會更有幫助......
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' } ]
將 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.