【问题标题】:How to convert an array to JSON format如何将数组转换为 JSON 格式
【发布时间】:2015-07-07 05:02:23
【问题描述】:

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

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

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

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

我怎样才能做到这一点?

【问题讨论】:

  • 你使用什么语言?
  • 不建议在 JSON 中使用重复键。您正在重复键“名称”
  • 我在 sapui5 中使用 JavaScript
  • @RakehSahu:你还需要这方面的帮助吗?你确定你打印的 JS 对象是你想要的输出吗?正如 AmauryMedeiros 指出的那样,您正在复制 name 键,您确实应该避免这种情况(如果它甚至被允许的话)。
  • 您的第二个 sn-p 缺少名称 "Lex"。这是笔误吗?

标签: javascript arrays json sapui5 keyvaluepair


【解决方案1】:

首先,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"}'

【讨论】:

    【解决方案2】:

    你想要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"}]}
    

    【讨论】:

    • 可能不会,因为你的输出和他的输出完全不同。
    • 如果我理解正确的话,他想使用 json 对象作为 json 模型的源。否则,他在问题中展示的对象有一点意义。当然,我可能错了。
    • 他想要'{ "name":"John", "name":"Kevin" }'。你给了'[{"name":"John"},{"name":"Kevin"},{"name":"Lex"}]'
    • 请在您的答案中包含您的代码,而不仅仅是指向它的链接。谢谢!
    猜你喜欢
    • 2018-03-11
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 2021-11-14
    相关资源
    最近更新 更多