【问题标题】:How to convert JSON string with attribute named with parenthesis to Typescript如何将带有括号命名的属性的JSON字符串转换为Typescript
【发布时间】:2018-11-10 02:03:24
【问题描述】:

我正在处理一个 Angular 项目。从 REST Web 服务,我收到了以下 JSON 数据:

{
  records: [{
    Contributor(Insertion): ["rec7wILrxxqg3R5MD"],
    Country(Artist): ["E"],
    ID: 70,
    Museum: ["recFUvc63FW00oxvO"],
    Name: ["Francisco "],
    Notes: "1821-1823",
    Pictures: [{id: "attEfUG32VAK2GYSt"}],
    RecordID: "rec17E0Nisx3oRhhF",
    Title: "Saturno che divora i suoi figli",
    Year: 1823,
    id: "rec17E0Nisx3oRhhF"}
]}

如您所见,有一个Contributor(Insertion)Country(Artist) 字段。如何解析它并转换为 Typescript 属性?提前谢谢你。

【问题讨论】:

  • 我猜你收到这个字符串是吧?
  • 这不是有效的 JSON。
  • 这不是有效的 JSON。最好修复后端,但缺少它,您可以删除括号后跟冒号和空格。
  • 所有键都是字符串,所以使用括号表示法,即data["Contributor(Insertion)"],而不是点表示法。如果名称在变量data[varName]
  • 您能完全按照您从后端接收的方式共享 json 字符串吗?

标签: javascript json typescript data-conversion


【解决方案1】:

首先您的服务器需要向您发送一个有效的 JSON,JSON 不只是原谅 JavaScript 对象

JSON 键必须是用两个引号括起来的字符串

export interface IMyInterface{
  "records": [{
    "key()": ["rec7wILrxxqg3R5MD"],
    "key2": ["E"],
    "key3": 70,
    "key4": ["recFUvc63FW00oxvO"],
    "key5": ["Francisco "],
    "key6": "1821-1823",
    "key7": [{"id": "attEfUG32VAK2GYSt"}],
    "key8": "rec17E0Nisx3oRhhF",
    "key9": "Saturno che divora i suoi figli",
    "key10": 1823,
    "key11": "rec17E0Nisx3oRhhF"}
]}

了解更多如何使JSON有效的方法

然后你需要将功能键作为类和构造函数来处理。

专业提示: 自动创建 ts 界面:http://json2ts.com/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-12
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2019-02-01
    • 1970-01-01
    相关资源
    最近更新 更多