【发布时间】:2019-07-21 00:41:02
【问题描述】:
我们正在使用 Postman 进行 API 测试。我们返回的一些对象非常冗长且不易处理,因此我想创建一个辅助方法以使它们更简洁。我知道有各种各样的转换库,如node-json-transform、selecttransform、jsontransforms 等,但不幸的是我只能使用Postman Sandbox libraries 和香草JS。
我正在寻找最简单(loc 和函数最少)的方法来转换这个对象:
var verbose = [
{
"Key": "Name",
"Value": "John Doe",
"Instance": 1
},
{
"Key": "Age",
"Value": "33",
"Instance": 1
},
{
"Key": "Child",
"Value": "Jane",
"Instance": 1
},
{
"Key": "Child",
"Value": "Rocky",
"Instance": 2
}];
进入这个:
var concise = {
"Name": "John Doe",
"Age": "33",
"Child": ["Jane", "Rocky"]
};
然后再回到详细形式。
我已经尝试过对每个对象进行 foreach 并将属性/值添加到新对象的本机方式,但是当我到达多个实例键/值对时,它很快就变得丑陋了。我可以想象使用 map/reduce 有一种更简单的方法,但我不熟悉这些方法。
【问题讨论】:
-
“我可以想象有一种更简单的方法使用 map/reduce,但我不熟悉这些方法。” - 然后熟悉它们。
-
如何区分
"foo": "bar"和"foo": ["bar"]?或者您是否假设您永远不会拥有第二个版本,并且一旦看到一个键是多值的,就会自动将一个简单的值提升为一个数组值? -
@Amadan 好问题。你的前提是正确的:这永远不会发生,如果是多值的,一个简单的值应该自动提升为一个数组。
标签: javascript json postman