如何使用自定义对象名称解析JSON数据?

时间:2019-05-10 00:12:32

标签: json typescript

我想用Typescript解析JSON,对象名称可能会有所不同,而我却无从知晓。例如:

{
     "planets": {

       "Alderaan": {

        "available_items": {

            "Cinamone": {

                "available": 74,

                "buy_price": 6,

                "sell_price": 6

            },

            "Dwimeryt": {

                "available": 42,

                "buy_price": 12,

                "sell_price": 11

            }
       }
    }
}

可以有很多名字不同的行星。

我发现,为了成功解析JSON对象,我们需要具有相应的变量名,例如,它可以工作:

interface MyObj {
     x: number;
     y: number:
}

let json_string = `{
        "x": 5,
         "y": 12
    }`;
  let test: MyObj = JSON.parse(json_string);

但是,如果我们将接口中的变量名称从“ x”更改为“ xx”,则在解析后它变得不确定。如果我们不知道所有JSON对象名称,那将造成看似无法解决的问题,因为我无法使用所有行星名称创建一个接口。我想念什么吗?您将如何解析我发布的JSON?

1 个答案:

答案 0 :(得分:0)

您对JSON本身有影响吗?在我看来,这不是使用JSON的最佳方法。如果我要设计这个,您的JSON看起来会更像这样:

{
     "planets": [
     {
        "name": "Alderaan",

        "available_items": [

        {
            "name": "Cinamone",

            "available": 74,

            "buy_price": 6,

            "sell_price": 6

         }, {
            "name": "Dwimeryt",

            "available": 42,

            "buy_price": 12,

            "sell_price": 11
         }]

    }]
}

这样,您将始终知道字段的名称及其类型。我不认为使用当前的JSON格式可以轻松实现这一目标。