代码之家  ›  专栏  ›  技术社区  ›  IsmailS

创建用星号分隔字符串的javascript对象

  •  0
  • IsmailS  · 技术社区  · 15 年前

    我有三根弦。

    var ids = "1*2*3";
    var Name ="John*Brain*Andy";
    var Code ="A12*B32*C38";
    

    我想为它创建一个javascript对象。

    2 回复  |  直到 9 年前
        1
  •  2
  •   Marcel Korpel    15 年前

    JSON对象只是一个字符串,因此它是:

    var json = '{"ids":"'+ids+'","Name":"'+Name+'","Code":"'+Code+'"}';
    

    如果要将字符串转换为字符串数组:

    var json = '{"ids":["'+ids.replace(/\*/g,'","')+'"],"Name":["'+Name.replace(/\*/g,'","')+'"],"Code":["'+Code.replace(/\*/g,'","')+'"]}';
    

    如果您根本不想使用JSON,但实际上是一个JavaScript对象,那么它将是:

    var obj = {
      ids: ids.split('*'),
      Name: Name.split('*'),
      Code: Code.split('*')
    };
    

    根据您的描述,“我希望数组的第一个项具有三个属性,即ID、名称和代码,分别具有值1、john和a12。”但这将完全不同:

    var Ids = ids.split('*'), names = Name.split('*'), codes = Code.split('*');
    var arr = [];
    for (var i = 0; i < Ids.length; i++) {
      arr.push({ Id: Ids[i], name: names[i], code: codes[i] });
    }
    

    如果你想把它作为JSON,它应该是:

    var Ids = ids.split('*'), names = Name.split('*'), codes = Code.split('*');
    var items = [];
    for (var i = 0; i < Ids.length; i++) {
      items.push('{"Id":"'+Ids[i]+'","name":"'+names[i]+'","code":"'+codes[i]+'"}');
    }
    json = '[' + items.join(',') + ']';
    

    (注意:最后一个代码只能在字符串不包含任何引号时正常工作,否则在放入字符串时必须进行转义。)

        2
  •  1
  •   Oleg    15 年前

    我发现那家伙回答得很好。我只想劝阻不要手动JSON序列化,因为 Name 属性可以具有必须转义的特殊字符。所以我建议对Guffa的建议和用法进行最小的修改 JSON.stringify (见 http://www.json.org/js.html )

    var Ids = ids.split('*'), names = Name.split('*'), codes = Code.split('*');
    var arr = [];
    for (var i = 0; i < Ids.length; i++) {
      arr.push({ Id: Ids[i], Name: names[i], Code: codes[i] });
    }
    var result = JSON.stringify(arr);