我正在从API接收json对象。我要做的事情(仅供参考:对每个键值进行一些字符串分析)对我收到的90%的对象都适用,因为键值是一个字符串,如下所示。
{ ID: '0012784',
utm_source: 'wesbite',
utm_medium: 'redirection',
utm_campaign: 'media'}
但是对于其中的10%,某些键可能是数组,如下所示:
problematicJson =
{ ID: '0012784',
utm_source: 'website',
utm_medium: [ 'redirection', 'somethingelse' ],
utm_campaign: [ 'nicestuff', 'again' ] }
我需要将上面的对象更改为这个新对象,以便我的脚本分析(需要纯字符串)起作用。
使用javascript,如何“破坏”并在下面的内容中重新创建问题ProblemsonJson
allStringsJson =
{ ID: '0012784',
utm_source: 'website',
utm_medium: 'redirection',
utm_medium = 'somethignelse',
utm_campaign: 'nicestuff',
utm_campaign = 'again' }
我还需要处理一个特例:当值不相等时,数组如下所示:
problematicJsonWithSimilarValues =
{ ID: '0012784',
utm_source: 'website',
utm_medium: [ 'redirection', 'redirection' ],
utm_campaign: [ 'lorem', 'lorem' ] }
因此,我需要编写somethign,在该处我不会在键和vlaue相同的地方得到多行,例如
allStringsJson =
{ ID: '0012784',
utm_source: 'wesbite',
utm_medium: 'redirection',
utm_medium = 'redirection',
utm_campaign: 'lorem',
utm_campaign = 'lorem' }
但是我需要从新的干净json对象中删除那些类似的行,这将用于有问题的JsonWithSimilarValues:
cleanObject =
{ ID: '0012784',
utm_source: 'website',
utm_medium: 'redirection',
utm_campaign = 'lorem' }
我尝试了很多方法,如reduce,split ...都没有成功。
如何实现?
答案 0 :(得分:1)
这行不通。
在JSON和Javascript对象中,每个键都是唯一的。因此,您不能有多个名为utm_medium
的属性。
但是您可以使用Array.join
来创建一个单独的字符串,该字符串用数组中的所有元素来表示。做类似的事情:
utm_medium: Array.isArray(utm_medium) ? utm_medium.split(' ') : utm_medium