2017-01-20 1 views
1

JSON 코드의 특정 부분을 다른 JSON과 병합하고 싶습니다.JSON의 특정 부분을 함께 병합합니다.

JSON : 1 :

{"metadata": { 
    "userName": "Batman", 
    "userId" : "402", 
    "config":{ 
     "a" : "some text here", 
     "b" : "some other text here" 
    } 
}} 

JSON 2 : 명확히하기 위해, 아래의 예를 참조하시기 바랍니다

{"metadata": { 
    "userName": "Superman", 
    "userId" : "102", 
    "config":{ 
     "a" : "Overwrite Text 1", 
     "b" : "Overwrite Text 2" 
    } 
}} 

지금, 나는 그래서 JSON 2 만 config 부품 JSON 일을 덮어 쓰려면 JSON 1은 다음과 같이됩니다 :

{"metadata": { 
    "userName": "Batman", 
    "userId" : "402", 
    "config":{ 
     "a" : "Overwrite Text 1", 
     "b" : "Overwrite Text 2" 
    } 
}} 

나는 이미 루프를 사용해 보았지만, 이 코드를 작성하는보다 효율적인 방법입니다. 나는 Angular하고 순수한 JS를 사용하고있다.

답변

2

그것 정말 간단 :

json1.metadata.config = json2.metadata.config; 

당신은 다른 JSON 객체의 설정과의 config 데이터를 덮어 씁니다.

더 자세히 설명하고 싶다면 알려주세요.

+1

finalJSON을 편집 할 때 json1도 편집 중입니다. – Axnyff

+1

나쁘다. 무슨 일이 벌어 졌는지 정말 분명하게하려고했지만, 그렇게 할 때 아마도 지나치게 복잡하게 만들었을 것입니다. 이 모든 것은 여전히 ​​질문에 의해 예상대로 일했습니다. – Djave

3

당신은 Object.assign을 시도 할 수 있습니다 - Mozilla foundation doc

var obj1 = JSON.parse(json1); 
var obj2 = JSON.parse(json2); 
Object.assign(obj1.metadata.config,obj2.metadata.config); 
0
json1.metadata.config = json2.metadata.config; 

이 충분해야한다.

json2.metadata.config를 수정하면 json1.metadata.config가 수정된다는 점을 기억해야합니다. 이것은 얕은 복사본입니다. 정확하지만 Djave로 Object.assign를 사용

0

말했다 당신은 ES6를 사용하지 않는 및 transpiler 당신은 각도 자체의 장점을 가지고 할 수있는 경우 angular.copy 일반 :

var obj1 = JSON.parse(json1); 
var obj2 = JSON.parse(json2); 
obj1.metadata.config = angular.copy(obj2.metadata.config); 

새를 얻을 것이다이 방법 JSON 부분은 자체적으로 복사되고 참조됩니다.

관련 문제