如何将数组转换为JSON格式

时间:2015-05-06 14:20:17

标签: javascript arrays json sapui5 keyvaluepair

我有一个字符串数组,例如

p[]={"John","Kevin","Lex"}  

我想将其转换为JSON,以便数据显示在键值对中,如:

{
    "name":"John",       
    "name":"Kevin"
}

我怎样才能实现这一目标?

2 个答案:

答案 0 :(得分:0)

首先,p[]={...}不是合法的JavaScript。我猜你的意思是:

p = ["John","Kevin","Lex"]

其次,规范允许使用JSON中的重复键,但大多数JSON库都不支持它。请参阅this question

这是因为大多数语言(如您正在使用的JavaScript)将关联数组结构序列化为JSON对象。关联数组显式地将键唯一地映射到值:

> a = {}
> a.name = "John"
    {name: "John"}
> a.name = "Jeff"
    {name: "Jeff"}

因此,如果您在pa上尝试最简单的JSON字符串化机制,则无法获得所需内容:

> JSON.stringify(p)
    '["John","Kevin","Lex"]'
> JSON.stringify(a)
    '{"name":"Jeff"}'

尝试此功能:

var many_named_JSON = function(array_of_names) {
  array_string =  JSON.stringify(array_of_names.map(function (item) {
    return "name:" + item;
  }));
  contents_regex = /\[(.*)\]/g;
  return ("{" + contents_regex.exec(array_string)[1] + "}").replace(/name:/g, 'name":"');
};

这里有效:

> many_named_JSON(["John","Kevin","Lex"])
    '{"name":"john","name":"jeff"}'

答案 1 :(得分:-1)

您想要this之类的内容吗?

var aArray = ["John","Kevin","Lex"];
var oMainObject = {};
var aMainObjectArray = [];
for (var i = 0; i < aArray.length; i++){
var oObject = {};
oObject.name = aArray[i];
aMainObjectArray.push(oObject);
)  
oMainObject.data = aMainObjectArray;

因此,oMainObject对象包含:

{data: [{"name":"John"},{"name":"Kevin"},{"name":"Lex"}]}