2012-07-20 3 views
0

내가 PHP 페이지에서 가져올 데이터를 순회하는 것은 같은 것입니다 :는 JSON 객체

[{ 
    "id": "1", 
    "name": null, 
    "startdate": "2012-07-20", 
    "starttime": "09:53:02", 
    "enddate": "2012-07-20", 
    "endtime": "09:54:10", 
    "duration": "01:00:00", 
    "feedbacks": [{ 
     "id": "1", 
     "type": "1", 
     "content": "cont" 
    }], 
    "conditions": [{ 
     "id": "1", 
     "dev_id": "1", 
     "mod_id": "2", 
     "sub_id": "3", 
     "to_be_compared_value": "1", 
     "comparison_type": "1" 
    }], 
    "actions": [{ 
     "id": "1", 
     "dev_id": "1", 
     "mod_id": "1", 
     "sub_id": "1", 
     "target_action": "1" 
    }] 
}] 

이 물체를 통과 할 쉽게 efficent 우아한 어떤 방법으로? 나는이 때까지이 두 가지를 사용했다. 어느 것이 나의 선택이어야하는지 당신이 말해 줄 수 있습니까, 아니면 저에게 대안을 줄 수 있습니까? 그리고 왜? 실행중인 버전의 응용 프로그램이 있고 지금은 자신의 코드를 검토 중이므로 모든 조언을 듣고 싶습니다.

$.map 
for(var i in obj) 

하나 더

가고, 나는이 데이터에서 테이블을 생성합니다 : 사전에

덕분에,

방법은 내가 전에 사용합니다.

+0

가 JSON.parse()를 사용할 수 없습니다? – C5H8NNaO4

+0

예, 구문 분석 한 후에 개체가 생겨서이 개체를 효율적으로 사용할 수 있습니까? – totten

+0

어떤 방식으로 사용 하시겠습니까? 루핑하거나 함수를 매핑하는 것은 올바른 컨텍스트에서 수행 할 수있는 완벽하게 좋은 동작입니다. 그러나이 데이터로 정확히 무엇을하고 싶습니까? –

답변

1

나는 jQuery's each()을 사용 ity 메소드), 지금 당신의 데이터가 JS에 친숙하지 않다. 그 날짜와 시간, 그 ID는 문자열입니다.

예 : 잡하는 데이터가 변경되지 않는 경우

function cleanMyObject(object){ 
     var cleanFeedbacks = function(feedbacks){ 
      /* ... */ 
      return feedback; 
     }; 

     object.start = /* transform date and time strings to datetime object ...*/ 
     object.end = /*...*/ 

     /*...*/ 

     $.map(object.feedbacks,cleanFeedbacks); 
     /* cleanup the remaining objects... */ 

     return object; 
    } 

    $.map(receivedData, cleanMyObject); 

    // cleanMyObject() returns the modified object so $.map will clean everything in your array. 
1

나는 이런 식으로 http://underscorejs.org/을 사용하는 것을 선호합니다. 그것은 개체, 컬렉션 등 유용한 기능을 많이 가지고

+1

나는 그것을 사랑해! 그녀는이 모든 시간을 어디에 있었습니까 :) – totten

-1

당신은 자바 스크립트 객체의 JSON 문자열을 변환하고이 같은 개체에 액세스 할 수 있습니다 jQuery.parseJSON에

var obj = jQuery.parseJSON(jsonString); 
alert('Id='+obj.id); 

var feedbackList = obj.feedbacks; 
for (var i=0; i<feedbackList.length; i++) { 
    ... 
} 

참조 : http://api.jquery.com/jQuery.parseJSON/

나는 심지어 일부 폴더의 유틸리티와 가능성 (당신은 또한 객체를 반환하는 함수를 작성해야 함을 추가해야합니다 (I 데이터를 변경하려는 경우 또는 map())

+0

나는이 객체를 이미 변형시키고 있다고 주석에 명시했습니다. 그러나 당신의 의견에 감사드립니다. – totten

0

, 단지 객체를 분석하고 당신이 필요로하는 키를 사용합니다. 내가 알고있는 모든 브라우저에는 JSON 문자열을 JS 객체로 변환하는 JSON.parse이라는 함수가 있습니다. 내가 말하고자하는 것은 : 게으르지 마십시오. 개체가 항상 동일한 데이터를 제공하고 "사용할 수있는 기회가 거의 없습니다"경우 "일반"기능을 작성하지 않아도됩니다. 그 다른 개체와 함께 다시 작동합니다.

var myobj= JSON.parse(phpJSONstring); 
var feedbacks= myobj["feedbacks"]; 
//do something with feedbacks 
var conditions= myobj["conditions"]; 
//do something with conditions 

+0

거기에이 데이터에 대한 기록이 하나도 없을 것입니다. 그보다 더 클 수도 있습니다. – totten

+0

은 JSON.parse 만 사용하면됩니다. –

+0

에 MDN 에 대한 링크가 추가 된 것을 확인했습니다. https://developer.mozilla.org/En/Using_native_JSON/ –