2013-05-05 2 views
0

JSON에서 동적으로 객체를 만들 수 있습니까?JSON에서 동적으로 객체 만들기

이 배열의 일부이다 :

values: [{ 
     "$type": "Entrance, DataModel", 
     "EntranceDeviceData": { 
      "$type": "DeviceData, DataModel", 
      "Watchdog": 0, 
      "Inputs": { 
       "$type": "Int16[], mscorlib", 
       "$values": [0, 0] 
      }, 
      "Outputs": { 
       "$type": "Int16[], mscorlib", 
       "$values": [0, 0] 
      }, 
      "Faults": { 
       "$type": "Int16[], mscorlib", 
       "$values": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 
      }, 
      "StandingCommand": 0 
     }, 
     "Vehicle": null, 
     "NextStates": { 
      "$type": "System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib", 
      "$values": ["CarApproachingBarrier"] 
     }, 
     "Repository": { 
      "$type": "System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[System.Object, mscorlib]], mscorlib" 
     }, 
     "Direction": 0, 
     "Name": "Entrance", 
     "Position": "0,0,0,0", 
    }, {...another object... 
    }, {...another one... 
    } 
] 

이 JSON 두 개체가 다르다. 미리 속성을 알지 않고도 (다른 모든 JSON 개체에 대해) 개체를 만들 수 있습니까? 내가 어떻게 해?

(나는 그게 가능하다고 들었지만 어쩌면 내가 그 사람을 잘 이해하지 못했다).

+4

* 다른 JSON 개체에 대해 * 만들 수 있습니까? – Blender

+0

당신이 가지고있는 것은 _not_ JSON입니다. JSON은 항상 비슷한 모양의 문자열 표현입니다. 가지고있는 것은 객체 리터럴을 통해 만들어진 두 개의 객체입니다. – nnnnnn

+0

필자가 의도 한 바를 설명하려고합니다 (코드를 실제 객체의 일부로 편집했습니다). 데이터에서 배열 객체를 만들어야합니다. 모든 "$ type"개체 ("Entrance, DataModel", "Spot, DataModel", "Exit, DataModel"등등)와 관련된 모든 배열은 "$ type"의 모든 종류를 모른 채 배열을 만들어야합니다. 나 JSON 객체 – user2004403

답변

0

원래 코드에서 JSON의 예제로 제공 한 것은 리터럴 객체를 정의하는 자바 스크립트의 방법입니다. json1과 json2는 이미 자바 스크립트 객체이며, 생성 할 필요가 없습니다.

// original code from question 
var json1 = { 
    "mysex": "female", 
    "yoursex": "male", 
    "location": { 
     "lat": "48", 
     "lng": "1" 
    }, 
    "description": "descr2", 
    "owner": "zBYnfuu8DXEwMttwZ", 
    "nickname": "user", 
    "_id": "1" 
}; 

에서 nnnnnn은 JSON 아래에 지적한 바와 같이 가장 일반적으로 것 이상으로 포맷 코드를 포함하는 문자열을 참조하는 데 사용됩니다

var json1_as_string = '{ 
    "mysex": "female", 
    "yoursex": "male", 
    "location": { 
     "lat": "48", 
     "lng": "1" 
    }, 
    "description": "descr2", 
    "owner": "zBYnfuu8DXEwMttwZ", 
    "nickname": "user", 
    "_id": "1" 
}'; 

실제 자바 스크립트 객체에 같은 문자열에서 얻으려면 당신은 그것을 구문 분석해야합니다 :

var json1 = JSON.parse(json1_as_string); 

반대 방향 (문자열에 자바 스크립트 개체) 캐릭터 라인 화함으로써 달성된다 :

var json1_as_string = JSON.stringify(json1); 

https://developer.mozilla.org/en-US/docs/Using_native_JSON

추신 참조

이 두 개의 매우 다른 객체가 동일한 "_id"를 갖는 것은 이상한 것처럼 보입니다.

+2

"JSON"이라는 용어는 JavaScript 코드에서 객체 리터럴을 설명하는 데 사용되지 않아야하며 JavaScript의 객체 리터럴 구문을 기반으로하지만 데이터 집합의 하위 집합 인 데이터 전송에 사용되는 문자열 형식을 설명합니다.(유감스럽게도 "JSON"이라는 용어를 사용하는 사람은 혼란을 통해 실제로 생각할 필요가 없었습니다.) – nnnnnn

+0

우선 id에 대해 : 나는 바꿨습니다. 나는 다른 포스트에서 그것을 베끼고 그것을 복제했다. 둘째 : 이것은 내가 의미했던 것이 아닙니다. 나는 위의 코멘트에서 자신을 더 잘 설명했다. – user2004403

0

질문을 완전히 변경 했으므로 문의하시는 내용을 이해하려고합니다.

이 두 JSON 개체는 서로 다릅니다. 속성을 미리 모른 채 객체를 만들 수 있습니까 ( 다른 JSON 객체)? 어떻게해야합니까?

예, 자바 스크립트에서는 속성을 미리 알지 못해도 개체를 만들 수 있습니다. Javascript는 강력한 형식이 아니며 클래스도 없습니다. 따라서 서로 다른 속성을 가진 객체가있는 에는 아무런 문제가 없습니다.