2017-02-24 4 views
0

한다고 가정 나는 다음과 같은 JSON 파일이 내가 lodash로, 양호하게 'existing.primaryBundle.products'배열을 반환하고 싶습니다 :lodash로 json에서 childobject를 반환하는 방법은 무엇입니까?

{ 
    "existing": { 
    "hasPlatinum": false, 
    "primaryBundle": { 
     "id": "2008", 
     "name": "TV - Entertainment, Sport", 
     "products": [ 
     { 
      "name": "Entertainment", 
      "id": "100", 
      "price": 2600, 
      "gifted": false 
     }, 
     { 
      "name": "Sport", 
      "id": "107", 
      "price": 2500, 
      "gifted": false, 
      "swappableProducts": [ 
      { 
       "name": "Movies", 
       "id": "105", 
       "price": 2000, 
       "gifted": false 
      } 
      ] 
     } 
     ] 
    }, 
    "extrasBundle": { 
     "id": "131", 
     "name": "Optional Extras - MUTV (Sports), LFCTV (Sports), Chelsea TV (Sports)", 
     "products": [ 
     { 
      "name": "MUTV (Sports)", 
      "id": "665", 
      "price": 0, 
      "gifted": false 
     }, 
     { 
      "name": "LFCTV (Sports)", 
      "id": "666", 
      "price": 0, 
      "gifted": false 
     }, 
     { 
      "name": "Chelsea TV (Sports)", 
      "id": "667", 
      "price": 0, 
      "gifted": false 
     } 
     ] 
    } 

    } 
} 

내가 시도 lodash이 문을 사용

리스트 2 = _.pick (기존 'primaryBundle.products')

하지만이 오류는 원하지 않는 결과를 반환합니다. 이 제품 배열을 어떻게 선택할 수 있습니까? existing 글로벌 범위 대상이 아닌 있기 때문에 오류를 반환하는 이유

+4

당신이 * 객체를 얻기 위해'obj', 당신은 단지'리스트 2 = obj.existing.primaryBundle.products' 말할 수 JSON의 * 문자열을 구문 분석 한 가정. Lodash는 필요 없습니다. – nnnnnn

답변

0

물론 _.get(nameOfObject, 'existing.primaryBundle.products')을 사용할 수 있습니다. 아래에서 수행 한 것처럼 객체 이름을 지정해야합니다. sampleObject;

체크 아웃 lodash docs 너무

const sampleObject = { 
    "existing": { 
    "hasPlatinum": false, 
    "primaryBundle": { 
     "id": "2008", 
     "name": "TV - Entertainment, Sport", 
     "products": [{ 
     "name": "Entertainment", 
     "id": "100", 
     "price": 2600, 
     "gifted": false 
     }, { 
     "name": "Sport", 
     "id": "107", 
     "price": 2500, 
     "gifted": false, 
     "swappableProducts": [{ 
      "name": "Movies", 
      "id": "105", 
      "price": 2000, 
      "gifted": false 
     }] 
     }] 
    }, 
    "extrasBundle": { 
     "id": "131", 
     "name": "Optional Extras - MUTV (Sports), LFCTV (Sports), Chelsea TV (Sports)", 
     "products": [{ 
     "name": "MUTV (Sports)", 
     "id": "665", 
     "price": 0, 
     "gifted": false 
     }, { 
     "name": "LFCTV (Sports)", 
     "id": "666", 
     "price": 0, 
     "gifted": false 
     }, { 
     "name": "Chelsea TV (Sports)", 
     "id": "667", 
     "price": 0, 
     "gifted": false 
     }] 
    } 
    } 
} 

console.log(_.get(sampleObject, 'existing.primaryBundle.products')); 
0

주된 이유는, 당신은 const obj = {...} 같은 몇 가지 변수에 객체를 할당하고 obj.existing_pick 메서드에 매개 변수를 전달해야한다, 그러나 나는이 표시되지 않습니다 여기에서 lodash를 사용하는 이유는 객체에 대한 경로를 직접 참조하기 만하면됩니다.