使用嵌套数组将 JSON 转换为逗号分隔的字符串
Posted
技术标签:
【中文标题】使用嵌套数组将 JSON 转换为逗号分隔的字符串【英文标题】:Convert JSON in comma separated string with nested array 【发布时间】:2018-04-24 14:45:35 【问题描述】:我知道那里有很多例子,但我仍然无法让它发挥作用。我有一个这样的 JSON:
"domiciles":["country":"AF","country":"AX","country":"AL"],"investor":["type":"ii","type":"pi"]
存储在 sessionStorage.getItem("profile");
如何转换成两个逗号分隔的字符串?喜欢...
AF,AX,AL
ii,pi
尝试失败:
var dataResidence = sessionStorage.getItem("profile");
var resultResidence = dataResidence.map(function(val)
return val.country;
).join(',');
console.log(resultResidence);
或者:
var newString = "";
for(var i=0; i< dataResidence.domiciles.length;i++)
newString += userDefinedSeries.country[i];
newString += ",";
console.log(newString);
【问题讨论】:
【参考方案1】:你需要解析你从sessionStorage
得到的字符串,然后才能映射加入:
var profile = '"domiciles":["country":"AF","country":"AX","country":"AL"],"investor":["type":"ii","type":"pi"]'; // sessionStorage.getItem("profile");
var dataResidence = JSON.parse(profile);
function mapAndJoin(arr, key)
return arr.map(function(o)
return o[key];
).join();
var domiciles = mapAndJoin(dataResidence.domiciles, 'country');
var investor = mapAndJoin(dataResidence.investor, 'type');
console.log(domiciles);
console.log(investor);
【讨论】:
感谢您的帮助!我在徘徊......我还看到了你的第一个版本(没有 mapAndJoin())......通过像 mapAndJoin() 这样的通用函数来做这件事,只是在多个输出的情况下更好的做法......或者还有更多的专业论点? 这是DRY principle - 不要重复你自己。如果您有多个使用相同代码的案例,请将其抽象为一个方法。现在,如果我想将分隔符从逗号更改为斜杠,我可以在一个地方进行更改。此外,处理新的情况非常容易,只需使用不同的参数再次调用该方法即可。我还可以测试抽象,以确保它处理边缘情况,例如空数组、非数组、未找到键等... 很高兴知道...感谢您提供更多信息!【参考方案2】:一种方法
var obj="domiciles":["country":"AF","country":"AX","country":"AL"],"investor":["type":"ii","type":"pi"];
console.log(JSON.stringify(obj));
var countries = obj.domiciles;
var str = '';
for(i=0;i<countries.length;i++)
if(i != countries.length - 1)
str+= countries[i].country+",";
else
str += countries[i].country;
console.log(str);
var type = obj.investor;
var str1 = '';
for(i=0;i<type.length;i++)
if(i != type.length - 1)
str1 += type[i].type+",";
else
str1 += type[i].type;
console.log(str1);
【讨论】:
以上是关于使用嵌套数组将 JSON 转换为逗号分隔的字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何将包含逗号分隔的 json 值的单个字符串转换为单个 json 对象?