首页 > 解决方案 > reactjs中如何将值对象转换为数组

问题描述

我有以下类型的数据。

{"username":"[\"abc\"]","password":"[\"asd\"]"}.

我想把它转换成

{"username":"abc","password":"asd"}.

我正在尝试 JSON.stringify 但它不起作用。

标签: javascript

解决方案


注意:这与 react 无关,react 在这里无法帮助您。

我假设您的输入数据是 JSON,并且您想再次创建 JSON。输入数据不是最优的,看起来你以某种方式对 JSON 进行了双重编码。理想情况下,它看起来像这样:

{"username":["abc"],"password":["asd"]}

即这些值是实际的数组,而不是包含更多 JSON 的字符串。

但是,使用您的原始数据,它会是这样的:

  1. 将 JSON 解析为带有JSON.parse.
  2. 将每个属性的值(同样是 JSON)解析为带有JSON.parse.
  3. 将结果数组的第一个元素分配回属性。
  4. 使用 .将对象转换为 JSON JSON.stringify

执行:

// assuming `input` contains the JSON data, i.e. something like
var input = String.raw`{"username":"[\"abc\"]","password":"[\"asd\"]"}`;

var obj = JSON.parse(input);
obj.username = JSON.parse(obj.username)[0];
obj.password = JSON.parse(obj.password)[0];

var output = JSON.stringify(obj);

console.log(output);


如果您设法生成“更好”的输入数据(在这种情况下,为什么不完全按照您的需要生成它呢?)并且没有嵌套 JSON,而是像我在开始时展示的那样正确的数组,那么步骤将是相同,但您不必调用JSON.parse属性。


推荐阅读