首页 > 解决方案 > 如何将带有标识符的 JSON 对象解析为打字稿?

问题描述

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

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

    ... etc ...
}

我创建了一个界面:

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

然后尝试解析json:

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

但我得到了错误SyntaxError: Unexpected token o in JSON at position 1。我已经签response入了一个 json 验证器,它通过了。

我想解析response成一个数组MyObj

标签: jsontypescript

解决方案


这里很少出错,您的类型定义没有使用正确的 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)

推荐阅读