2017-11-04 95 views
1

我想问一个关于将jsonArray转换为android上的StringArray的问题。这里是我的代码来获得jsonArray将JSONArray转换为具有自定义格式的字符串数组

0:{Value: "0", Display: "w"} 
1:{Value: "22", Display: "1w"} 
2:{Value: "30", Display: "w2"} 
3:{Value: "45", Display: "w3"} 

我要转换格式

{"0":"w","22":"w2","30":"w2","45":"w3"} 

这是我的代码

cols = [ 
     { 
      Id: 'combo', 
      Values: [ 
         { "Value": "0", "Display": "w" }, 
         { "Value": "22","Display": "1w" }, 
         { "Value": "30", "Display": "w2" }, 
         { "Value": "45", "Display": "w3" } 
        ], 
     }, 
] 
var jsonString = JSON.stringify(cols.Values).replace("]", "").replace("[", "").replace("},{", "");  

这个结果

"{"Value":"0","Display":"w""Value":"22","Display":"1w"}, 
               {"Value":"30","Display":"w2""Value":"45","Display":"w3"}"  
+0

SICE你硬编码您的输入,那么为什么不让它initally以你想要的方式最后。为什么额外的代码硬编码所需的格式本身。 –

+0

'{“0”:“w”,“22”:“w2”,“30”:“w2”,“45”:“w3”}'你想要的输出吗?这不是一个字符串数组,它是一个对象。 (或者它是一个编码为JSON字符串的对象 - 如果没有更多的上下文,就无法说出来。)另外,如果输入数组有多个具有相同“Value”的项目呢?你可能会更好地将问题重新定义为“JavaScript”而不是“jQuery”。 – nnnnnn

+0

此输出格式为jqgrid组合; – saeed3164

回答

1

可以遍历您输入并创建你想要的输出li柯以下: -

cols = [ 
 
     { 
 
      Id: 'combo', 
 
      Values: [ 
 
         { "Value": "0", "Display": "w" }, 
 
         { "Value": "22","Display": "1w" }, 
 
         { "Value": "30","Display": "w2" }, 
 
         { "Value": "45","Display": "w3" } 
 
        ], 
 
     }, 
 
];// this input is coming form somwhere 
 

 
obj = {}; 
 

 
$.each(cols[0].Values,function(key,value){ 
 
    obj[value.Value] = value.Display; 
 
}); 
 

 
console.log(obj);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

注: -“jQuery库是必须加上”上面的代码。

或者你可以只使用标准.forEach()函数,而不是$.each(),然后这个代码就不需要jQuery的。

.forEach()

例子: -

cols = [ 
 
     { 
 
      Id: 'combo', 
 
      Values: [ 
 
         { "Value": "0", "Display": "w" }, 
 
         { "Value": "22","Display": "1w" }, 
 
         { "Value": "30","Display": "w2" }, 
 
         { "Value": "45","Display": "w3" } 
 
        ], 
 
     }, 
 
];// this input is coming form somwhere 
 

 
obj = {}; 
 

 

 
cols[0].Values.forEach(function(value) { 
 
    obj[value.Value] = value.Display; 
 
}); 
 
console.log(obj);

+1

*“jQuery库必须添加”* - 或者您可以使用标准数组''.forEach()'方法而不是'$ .each()',然后此代码将不需要jQuery。 – nnnnnn

+0

@nnnnnn是很好的指针。在我的说明部分添加。谢谢 –

相关问题