我从服务器获取此JSON。但是,要使用此JSON,我需要在MH对象中添加方括号。我怎样才能做到这一点。我尝试过.map
,但没有为我工作。有没有更好的解决方案。还是.map
在那里使用。如果可以,您可以向我提示如何操作。还是有更好的解决方案?
{
"PAD": [
{
"PADPS286": "Dampf",
"PADPS124": "Hans",
"PADPS60": "2018-05-01",
"PADPS143": "1",
"MH": {
"MHVSS1": [
{}
],
"MHDIRW214": 2017,
"MHDIRW215": 2018,
"birthdate": "2018-05-01",
"MHDIRW129 ": "0"
}
},
{
"PADPS286": "Snow",
"PADPS124": "Jon",
"PADPS60": "2077-05-01",
"PADPS143": "",
"MH": {
"MHVSS1": [
{}
],
"MHDIRW214": 4,
"MHDIRW215": 4,
"birthdate": "2077-05-01",
"MHDIRW129 ": "0"
}
}
]
}
我需要带有MH对象的方形括号的JSON
{
"PAD": [
{
"PADPS286": "Dampf",
"PADPS124": "Hans",
"PADPS60": "2018-05-01",
"PADPS143": "1",
"MH": [{
"MHVSS1": [
{}
],
"MHDIRW214": 2017,
"MHDIRW215": 2018,
"birthdate": "2018-05-01",
"MHDIRW129 ": "0"
}]
},
{
"PADPS286": "Snow",
"PADPS124": "Jon",
"PADPS60": "2077-05-01",
"PADPS143": "",
"MH": [{
"MHVSS1": [
{}
],
"MHDIRW214": 4,
"MHDIRW215": 4,
"birthdate": "2077-05-01",
"MHDIRW129 ": "0"
}
]}
]
}
答案 0 :(得分:1)
这并不是真正的“添加方括号”,而是将“ MH”对象包装在数组中。
无论如何,这是一条.map
语句将为您完成(无需更改原始数据,因此Object.assign
的恶作剧):
data.PAD = data.PAD.map((padObj) => Object.assign({}, padObj, {MH: [padObj.MH]}));
基本上,对于PAD
数组中的每个条目,我们在那里合并三个对象:
{}
padObj
条目padObj
中的MH元素包装在数组中。输出符合预期:
{
"PAD": [
{
"PADPS286": "Dampf",
"PADPS124": "Hans",
"PADPS60": "2018-05-01",
"PADPS143": "1",
"MH": [
{
"MHVSS1": [{}],
"MHDIRW214": 2017,
"MHDIRW215": 2018,
"birthdate": "2018-05-01",
"MHDIRW129 ": "0"
}
]
},
{
"PADPS286": "Snow",
"PADPS124": "Jon",
"PADPS60": "2077-05-01",
"PADPS143": "",
"MH": [
{
"MHVSS1": [{}],
"MHDIRW214": 4,
"MHDIRW215": 4,
"birthdate": "2077-05-01",
"MHDIRW129 ": "0"
}
]
}
]
}
答案 1 :(得分:1)
只需在data.PAD
上使用forEach
,即可将MH
属性重新分配给数组。由于数组和对象是通过JavaScript中的引用传递的,因此这将修改您的数据:
data.PAD.forEach(pad => pad.MH = [pad.MH]);
const data = {
"PAD": [
{
"PADPS286": "Dampf",
"PADPS124": "Hans",
"PADPS60": "2018-05-01",
"PADPS143": "1",
"MH": {
"MHVSS1": [
{}
],
"MHDIRW214": 2017,
"MHDIRW215": 2018,
"birthdate": "2018-05-01",
"MHDIRW129 ": "0"
}
},
{
"PADPS286": "Snow",
"PADPS124": "Jon",
"PADPS60": "2077-05-01",
"PADPS143": "",
"MH": {
"MHVSS1": [
{}
],
"MHDIRW214": 4,
"MHDIRW215": 4,
"birthdate": "2077-05-01",
"MHDIRW129 ": "0"
}
}
]
};
data.PAD.forEach(pad => pad.MH = [pad.MH]);
console.log(data)
答案 2 :(得分:0)
尝试使用forEach
循环。在MH
内的每个PAD array
属性上,将其设置为array
,然后将其分配回对象
var a = {
"PAD": [{
"PADPS286": "Dampf",
"PADPS124": "Hans",
"PADPS60": "2018-05-01",
"PADPS143": "1",
"MH": {
"MHVSS1": [{}],
"MHDIRW214": 2017,
"MHDIRW215": 2018,
"birthdate": "2018-05-01",
"MHDIRW129 ": "0"
}
},
{
"PADPS286": "Snow",
"PADPS124": "Jon",
"PADPS60": "2077-05-01",
"PADPS143": "",
"MH": {
"MHVSS1": [{}],
"MHDIRW214": 4,
"MHDIRW215": 4,
"birthdate": "2077-05-01",
"MHDIRW129 ": "0"
}
}
]
};
a.PAD.forEach((e, i) => {
a.PAD[i].MH = [e.MH]
})
console.log(a)
答案 3 :(得分:0)
var obj = {
"PAD": [
{
"PADPS286": "Dampf",
"PADPS124": "Hans",
"PADPS60": "2018-05-01",
"PADPS143": "1",
"MH": {
"MHVSS1": [
{}
],
"MHDIRW214": 2017,
"MHDIRW215": 2018,
"birthdate": "2018-05-01",
"MHDIRW129 ": "0"
}
},
{
"PADPS286": "Snow",
"PADPS124": "Jon",
"PADPS60": "2077-05-01",
"PADPS143": "",
"MH": {
"MHVSS1": [
{}
],
"MHDIRW214": 4,
"MHDIRW215": 4,
"birthdate": "2077-05-01",
"MHDIRW129 ": "0"
}
}
]
};
var objMod = {};
objMod.PAD = obj.PAD.map(o => {
var mo = JSON.parse(JSON.stringify(o));
mo["MH"] = Array(o["MH"]);
return mo;
});
console.log(objMod);
答案 4 :(得分:0)
如果你想添加一个字符串数组(只在字符串周围添加括号),那么上面的方法可能会起作用,但是如果你试图使属性成为一个数组,你需要做的是将 JSON 属性转换为一个列表在课堂上按照:
public class AddressElements
implements Serializable
{
@JsonProperty("Street")
private List<Street> Street = new ArrayList<Street>();
@JsonProperty("HouseNumber")
private List<HouseNumber> HouseNumber = new ArrayList <HouseNumber>();
@JsonProperty("Locality")
private List<Locality> Locality = new ArrayList<Locality>();
@JsonProperty("AdministrativeDivision")
private List<AdministrativeDivision> AdministrativeDivision = new
ArrayList<AdministrativeDivision>();
@JsonProperty("PostalCode")
private List<PostalCode> PostalCode = new ArrayList<PostalCode>();
@JsonProperty("Country")
private String Country;
<getters and setters>
}
结果输出(初始化后)如下所示:
"body": {
"Login": "ssssss",
"Password": "eeeeee",
"UseTransactionPool": "test",
"JobToken": "",
"Request": {
"parameters": {
"Mode": "Certified"
},
"IO": {
"Inputs": {
"AddressElements": {
"Street": [
{
"Value": "Wilder Rd."
}
],
"HouseNumber": [
{
"Value": "123"
}
],
"Locality": [
{
"Value": "Newton"
}
],
"AdministrativeDivision": [
{
"Value": "NY"
}
],
"PostalCode": [
{
"Value": "12345"
}
],
"Country": "USA"
}
}
}
}
} }