helloo ,,
我尝试从使用linkedin注册的用户检索所有可能的字符串值。结果是json格式,,,
请注意,来自一个用户的一个呼叫将与另一个用户获得不同的结果...例如..:
一旦未来的时间,,,用户使用linkedin注册我的应用程序,在我获得访问令牌后,我打电话给linkedin api并获得此json结果:
[
"First Name 1","Headline 1","MMk56SU","Education","Last Name 1","https://media.licdn.com/mpr/mprx/0_0FVMABigi5VY-wfOsimN0hTy6qn0-om7KFGcqGuy8qWY-Vj7JAG4shGykPWCAejmJAhBJ5Dp7_VOlmK7KN05J_8ro_VxlaMCzN0s-Cvj3Cf1U4COMLWqt9U2E9h74aaPycUvvK","My Lovely College","Student"
]
问题是:如何将json转换为仅包含如下值的字符串数组:
{
"firstName": "First name 2",
"headline": "Headline 2",
"id": "DsadDSsa",
"industry": "Education",
"lastName": "Last Name 2",
"location": {"name": "Some Country"},
"summary": "my summary"
}
之后,其他用户注册,,,我再次打电话,,,然后我得到这个结果
[
"First name 2","Headline 2","DsadDSsa","Education","Last Name 2","Some Country","my summary"
]
问题是:如何将json转换为仅包含如下值的字符串数组:
{{1}}
之后,其他用户注册,,,等等,
一个用户与另一个用户的json结果的关键和结构会有所不同,,,所以最好假设密钥和结构未知
我只需要检索字符串值,,,因此应排除数字和布尔值,,,
欢迎来自vanilla js或lodash或下划线或jquery的解决方案...非常感谢你,,,
答案 0 :(得分:0)
我同意@ Xotic750,很高兴看到你自己尝试过的东西。但是,这是一个解决方案。它是一个递归函数,不需要像lodash这样的库。
function stringValues(obj) {
var strings = [];
Object.keys(obj).forEach(function (key) {
var value = obj[key];
if (typeof value === 'string') {
strings.push(value);
} else if (typeof value === 'object') {
strings = strings.concat(stringValues(value));
}
});
return strings;
}
幸运的是,我们甚至不需要为value
是一个数组做一个特例,因为数组是JavaScript中的对象,所以它们将由else if
块和平原一起处理对象。