将 JSON 字符串转换为对象自定义对象

时间:2021-02-21 16:14:19

标签: javascript json typescript

我有一个 JSON 字符串,想将其转换为 javascript 中的对象,唯一的问题是目标对象将具有不同的变量名称,我希望将键分配给变量并将值分配给不同的变量

JSON 将是

{
 "Value1":"Type1",
 "Value2":"Type2"
}

对象将是

interface Object {
   Value: string;
   Type: string;
}

我希望将 JSON 转换为对象数组,其中将键 (Value1/Value2) 分配给对象变量 Value 并将值 (Type1/Type2) 分配给对象变量 Type,因此生成的对象数组如下所示

[{Value: Value1, Type: Type1}, {Value: Value2, Type: Type2}]

常规 JSON.parse 将不起作用,因为对象与 json 字符串不同,感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

您可以使用 Object.entriesmap

const obj = {
 "Value1":"Type1",
 "Value2":"Type2"
};

const result = Object.entries(obj).map(([Value, Type])=>({Value, Type}));

console.log(result);

答案 1 :(得分:1)

你可以使用这个:

Object.entries(JSON.parse(json)).map(([Value, Type]) => {
    return { Value, Type };
});

答案 2 :(得分:0)

Refular JSON.parse 工作得很好,你只需要在解析后做一个转换步骤。将问题分解为多个步骤。

type MyInput = {
  Value1: string;
  Value2: string;
}
type MyOutput = {
  Value: string;
  Type: string;
}

function myConversionFunction(input: MyInput): MyOutput {
  return {
    Value: input.Value1,
    Type: input.Value2
  }
}

const out = JSON.parse(str).map(myConversionFunction);

答案 3 :(得分:0)

这是一个很好的问题,我经常在其他语言中遇到。

我发现创建一个帮助函数或构造函数来将适当的键映射到适当的变量是最容易的。您将键作为参数并创建对象,将每个键分配给正确的变量。

您将始终将相同的键名映射到相同的变量名,因此如果您在此辅助方法中设置此映射一次并为每个对象调用它,它应该对每个对象都正确工作。

我不主动用 JS 编写代码。也许您想到了这一点以及它无法正常工作的原因?