我有一个字符串数组,例如
p[]={"John","Kevin","Lex"}
我想将其转换为JSON,以便数据显示在键值对中,如:
{
"name":"John",
"name":"Kevin"
}
我怎样才能实现这一目标?
答案 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"}
因此,如果您在p
或a
上尝试最简单的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"}]}