如何将带有标识符的JSON对象解析为打字稿?

时间:2019-07-16 11:07:36

标签: json typescript

我有一个看起来像这样的大json对象:

apiUrl:   'https://sandboxbackend.cloudinteractiveplatforms.com/api',

我创建了一个界面:

{
     "item1": {
         "key1": "val1",
         "key2": "val2",
         "key3": [
             "val4",
             "val5",
         ]
    },
    {
     "item2": {
         "key1": "val1",
         "key2": "val2",
         "key3": [
             "val3",
             "val4",
         ]
    }

    ... etc ...
}

然后尝试解析json:

interface MyObj {
    key1: string;
    key2: string;
    key3: string[];
}

但是出现错误const myObj[]: {string: Myobj[]} = JSON.parse(response); 。我已经在json验证程序中检查了SyntaxError: Unexpected token o in JSON at position 1并通过了。

我想将response解析为response的数组。

1 个答案:

答案 0 :(得分:1)

这里很少出问题,这里的类型定义未使用正确的TypeScript语法

const myObj[]: {string: Myobj[]} = JSON.parse(response);
           ^^^^^^^^^^^^^^^^^^^^^
             This looks weird

同样,您的响应对象格式错误,key3无效(数组和对象之间的距离为一半)。

无论如何,请尝试先定义响应的类型,然后再解析:

type MyObj = {
  key1: string
  // etc ...
}

type Response = {
  [key: string]: MyObj
}

const data:Response = JSON.parse(response)