2015-03-23 2 views
0

Я пытаюсь получить идентификатор от моего JSON, но похоже, что я делаю что-то глупое.Получение значения из строки JSON

Пожалуйста, смотрите мой код json и jquery ниже.

myData = 'result({"respond":1,"paging":{"stillmore":0,"perpage":10,"callpage":1,"next":2,"previous":0,"pages":1,"result":"1"},"message":"","result":[{"ID":"1","user_registered":"13th February 2015","display_name":"SMPI","description":"","custom_fields":{"job_title":"Developer","company_name":"SMIO","telephone_number":"+1 343 5325 6456","thumbnail_id":"domain.com\/wp-content\/uploads\/ava.jpg"}}]});'; 

var myData = JSON.parse(myData); 

$(document).ready(function() { 
$.each(myData, function() { 
    $('<li>' + this.result.ID + '</li>').appendTo('#groups'); 
}); 
}); 

Если бы кто-нибудь мог помочь мне в моей проблеме, я был бы очень признателен. Пожалуйста, не стесняйтесь изменить мою jsfiddle:

http://jsfiddle.net/pae5f3j7/

ответ

2

Ваш JSON не в правильном формате, и вы получите SyntaxError: Unexpected token r когда вы пытаетесь разобрать его.

var data= 'result({"respond":1,"paging":{"stillmore":0,"perpage":10,"callpage":1,"next":2,"previous":0,"pages":1,"result":"1"},"message":"","result":[{"ID":"1","user_registered":"13th February 2015","display_name":"SMIO API","description":"","custom_fields":{"job_title":"Developer","company_name":"SMIO","telephone_number":"+1 343 5325 6456","thumbnail_id":"domain.com\/wp-content\/uploads\/ava.jpg"}}]});'; 


data=data.replace('result(',''); 
data=data.replace(');',''); 

var parsedData= JSON.parse(data); 
// you can now get ID (example : parsedData.result[0].ID) 
+0

Спасибо @ Kosmo, это сработало для меня хорошо! – qqruza

1

Попробуйте

// call `JSON.stringify` with `myData` argument 
var myData = JSON.stringify({ 
    "respond": 1, 
    "paging": { 
     "stillmore": 0, 
     "perpage": 10, 
     "callpage": 1, 
     "next": 2, 
     "previous": 0, 
     "pages": 1, 
     "result": "1" 
    }, 
    "message": "", 
    "result": [{ 
     "ID": "1", 
     "user_registered": "13th February 2015", 
     "display_name": "SMIO API", 
     "description": "", 
     "custom_fields": { 
      "job_title": "Developer", 
      "company_name": "SMIO", 
      "telephone_number": "+1 343 5325 6456", 
      "thumbnail_id": "domain.com\/wp-content\/uploads\/ava.jpg" 
     } 
    }] 
}); 

// call `JSON.parse` with `myData` argument 
var res = JSON.parse(myData); 

$(document).ready(function() { 
    // call `$.each` with `res.result` array argument 
    $.each(res.result, function (key, val) { 
     console.log(key, val); 
     $("<li>" + val.ID + "</li>").appendTo("#groups"); 
    }); 
}); 

jsfiddle http://jsfiddle.net/pae5f3j7/3/


альтернативно

function result(data) { 
    return data 
}; 

myData = 'result({"respond":1,"paging":{"stillmore":0,"perpage":10,"callpage":1,"next":2,"previous":0,"pages":1,"result":"1"},"message":"","result":[{"ID":"1","user_registered":"13th February 2015","display_name":"SMIO API","description":"","custom_fields":{"job_title":"Developer","company_name":"SMIO","telephone_number":"+1 343 5325 6456","thumbnail_id":"domain.com\/wp-content\/uploads\/ava.jpg"}}]});'; 

myData = eval(myData); 

$(document).ready(function() { 
    $.each(myData.result, function (key, val) { 
     console.log(key, val); 
     $("<li>" + val.ID + "</li>").appendTo("#groups"); 
    }); 
}); 

jsfiddle http://jsfiddle.net/pae5f3j7/5/


// removed semicolon `;` at close of string 
myData = 'result({"respond":1,"paging":{"stillmore":0,"perpage":10,"callpage":1,"next":2,"previous":0,"pages":1,"result":"1"},"message":"","result":[{"ID":"1","user_registered":"13th February 2015","display_name":"SMIO API","description":"","custom_fields":{"job_title":"Developer","company_name":"SMIO","telephone_number":"+1 343 5325 6456","thumbnail_id":"domain.com\/wp-content\/uploads\/ava.jpg"}}]})'; 


myData = JSON.parse(myData.split(/^.*\(|\)$/)[1]); 

$(document).ready(function() { 
    $.each(myData.result, function (key, val) { 
     console.log(key, val); 
     $('<li>' + val.ID + '</li>').appendTo('#groups'); 
    }); 
}); 

jsfiddle http://jsfiddle.net/pae5f3j7/6/

1

JQuery $ .each принимает анонимную функцию с двумя переменными, которые обычно называют IDX и элем, ссылаясь на индекс массива и элемент массива.

Ваш. каждая функция должна выглядеть примерно так:

$(myData).each(function (idx, elem) { 

    var item = "<li>" + $(elem).result.ID + "</li>"; 
    $("#groups").append(item); 
}); 

Это предполагает, что myData является массивом JQuery.

Смежные вопросы