Javascript-将json对象数组的值更改为多个字符串

时间:2018-11-22 10:31:29

标签: javascript arrays json

我正在从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 ...都没有成功。

如何实现?

1 个答案:

答案 0 :(得分:1)

这行不通。

在JSON和Javascript对象中,每个键都是唯一的。因此,您不能有多个名为utm_medium的属性。

但是您可以使用Array.join来创建一个单独的字符串,该字符串用数组中的所有元素来表示。做类似的事情:

utm_medium: Array.isArray(utm_medium) ? utm_medium.split(' ') : utm_medium