带有引号的JSON对象键 - 如何?

时间:2017-04-18 04:40:10

标签: javascript jquery json

我有一个名称列表,并使用它们作为json对象的键,但是,有时候,键可能包含双引号,如下所示:

var parts = {
    Expando Sleeve 1/4": [
    {
        id:"45", name:"TEST REPORT", partID:"4"
    },
    {
        id:"15", name:"01-077512", partID:"4"
    }]
};

所以,我在这里遇到的问题是我的名字是Expando Sleeve 1/4",这就是我需要的,但我把它存储在页面上的隐藏输入元素中,如:{{ 1}}

所以我做一个ajax调用,而不是使用隐藏输入元素的值...就像这样将响应值添加到全局<input type="hidden" value="Expando Sleeve 1/4"" name="partName" />数组......

parts

这里的问题是它将密钥添加到json对象var $val = $('input[name="partName"]').val(); if (!parts.hasOwnProperty($val)) parts[$val] = []; parts[$val].push(response[$val]); 中,如下所示:

parts代替parts[Expando Sleeve 1/4\"]部分。所以我在努力学习如何在这里取消双引号,并设置如下关键字:[Expando Sleeve 1/4"]

我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:1)

在JSON中使用双引号HTML字符&quot;

var parts = {
    "Expando Sleeve 1/4&quot;": [
    {
        id:"45", name:"TEST REPORT", partID:"4"
    },
    {
        id:"15", name:"01-077512", partID:"4"
    }];
};

答案 1 :(得分:1)

在Chrome控制台中一切正常:

var obj = {};    
var val = "Expando Sleeve 1/4\"";
obj[val]="x";    
console.log(obj)
//console >> Object {Expando Sleeve 1/4": "x"}

另一种选择:

var parts = {
    "Expando Sleeve 1/4\"": [
    {
        id:"45", name:"TEST REPORT", partID:"4"
    },
    {
        id:"15", name:"01-077512", partID:"4"
    }]
};    
console.log(parts)
//console >> 
//Object   Expando Sleeve 1/4": Array(2)
//__proto__    :    Object

好像是jquery问题

<强> UPD: 它的html-safety&#34;问题&#34;,工作解决方案:

$('<input value="escape&quot"/>').val()

答案 2 :(得分:0)

您可以使用字符文字引号(')将JSON键保存为字符串

var parts = {
    'Expando Sleeve 1/4"': [
    {
        id:"45", name:"TEST REPORT", partID:"4"
    },
    {
        id:"15", name:"01-077512", partID:"4"
    }]
};

答案 3 :(得分:0)

从值

替换双引号

&#13;
&#13;
  var infoWindow = new google.maps.InfoWindow;
  // open info window
  var onMarkerClick = function() {
    var marker = this;
    infoWindow.setContent( marker.details );
    infoWindow.open(map, marker);
    mkmap.lastmarkeropened = marker;
  };
  // close the info window
  google.maps.event.addListener(map, 'click', function() {
    infoWindow.close();
  });

  var marker = [] ;
  // loop start
  for(i=0; i < data.length; i++){
    console.log(data[i].eventLocation + " OF TYPE " + data[i].eventType);
    if(data[i].eventName != ""){
      title = data[i].eventName;
    }
    if(data[i].eventDetails != ""){
      details = data[i].eventDetails;
    }

      if(data[i].eventLocation == "Location 1"){
        lati = -29.651409;
        lngi = 82.342909;
      }
      else if(data[i].eventLocation == "Location 2"){
        lati = -29.637712;
        lngi = 82.368024;
      }
      else if(data[i].eventLocation == "Location 3"){
        lati = -29.650533;
        lngi = 82.342684;
      }
      else{
        lati = -29.645793;
        lngi = 82.347717;
        console.log(data[i].eventLocation + " not found");
      }

      marker[ i ] = new google.maps.Marker({
        position: {lat: lati, lng: lngi},
        title : title,
        map: map,
        icon: image,
        details: details
      });

      // attach event to open info window
      google.maps.event.addListener(marker[ i ], 'click', onMarkerClick );
    } // end loop
&#13;
&#13;
&#13;