【问题标题】:Decode json object解码json对象
【发布时间】:2013-10-22 17:14:03
【问题描述】:

你好,这是我的 ajax 调用的 json 响应:

[{"id":null,"period":null,"until":null,"agent_id":"15","agent_zlecajacy_id":"15","offer_id":null,"status":"1","tytul":"Pobranie ksi\u0105g","tresc":"Pobranie ksi\u0105g","data_aktualizacji":"2013-10-21","data_kontaktu":"2013-10-08 22:00:00","data_kontaktu_end":"0000-00-00 00:00:00","czas_minuty":"30","created":"2013-10-21","type":"todo","series":null,"offers":"","details":"","parent_id":"0","assignment":null,"color":null,"asigned_users":null,"e_type":null,"show":null}]

如何获得例如状态“1”, 我尝试了 $.parseJSON(result),但得到了

SyntaxError: JSON.parse: unexpected character

也许是因为有空值?

这里有更多代码

url: "/schedule/getDetails/?id="+event_id,
        dataType: 'json',
        async: false,
        success : function(json) {
            result = json.result;
                        console.log($.parseJSON(result));

和 php (zend)

$result = $model->getDetails($id);
            $this->sendJSON($result);

【问题讨论】:

  • 您的响应看起来像一个 javascript 对象而不是字符串。 $.parseJSON 接受一个字符串 arg。我的意思是,您不需要解析.. 只需从对象中读取。尝试提醒result[0].status
  • 你确定这是result 的值吗?我刚试过JSON.parse(<the JSON you posted>),效果很好。
  • jsonlint.com 似乎可以验证您提供的 JSON。当试图找出错误实际发生的位置时,更多的代码会给人们更多的工作。
  • 假设它是一个实际的字符串,如果您将 php 文件保存为 uft-8 文件而没有关闭它,那么这可能是 json 开头的 BOM 字符的问题。见this questionthis question

标签: javascript jquery json


【解决方案1】:

你应该

var a = [{"id":null,"period":null,"until":null,"agent_id":"15","agent_zlecajacy_id":"15","offer_id":null,"status":"1","tytul":"Pobranie ksi\u0105g","tresc":"Pobranie ksi\u0105g","data_aktualizacji":"2013-10-21","data_kontaktu":"2013-10-08 22:00:00","data_kontaktu_end":"0000-00-00 00:00:00","czas_minuty":"30","created":"2013-10-21","type":"todo","series":null,"offers":"","details":"","parent_id":"0","assignment":null,"color":null,"asigned_users":null,"e_type":null,"show":null}];

console.log(a[0]);

DEMO

之后您可以访问如下元素

console.log(a[0].id);
console.log(a[0].period);

【讨论】:

    【解决方案2】:

    您的 json 响应只不过是具有单个元素的数组中的一个对象。所以你可以访问你想要的属性:

    your_response[0].attribute_name
    

    例如,以下代码将提取您的 agent_id:

    myVar= [{"id":null,"period":null,"until":null,"agent_id":"15","agent_zlecajacy_id":"15","offer_id":null,"status":"1","tytul":"Pobranie ksi\u0105g","tresc":"Pobranie ksi\u0105g","data_aktualizacji":"2013-10-21","data_kontaktu":"2013-10-08 22:00:00","data_kontaktu_end":"0000-00-00 00:00:00","czas_minuty":"30","created":"2013-10-21","type":"todo","series":null,"offers":"","details":"","parent_id":"0","assignment":null,"color":null,"asigned_users":null,"e_type":null,"show":null}]
    
    alert(myVar[0].agent_id])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-07
      • 2013-08-14
      • 1970-01-01
      • 2012-09-20
      • 2018-11-30
      • 2016-07-22
      • 2018-04-02
      • 1970-01-01
      相关资源
      最近更新 更多