var val;

var val2;

var val3;

val.loadFromFile("test.json");


val2 = val["obj1"][3];

val2["key1"] = "345";

int n = val2["key1"].getInteger();

val["obj1"][3]["key1"] = 123;

std::cout << val["obj1"][3]["key1"] << std::endl;

std::cout << val2["key1"] << std::endl;


Object는 LinkedHashMap 기반(입력순서유지 가능)

Array는 vector 기반


javascript의 구현과 마찬가지로 Object 및 Array는 대해서는 기본적으로 pass-by-reference로 동작

따라서 위의 코드는 Object를 복제한것이 아니고 참조한 것이므로 동일하게 123이 출력됨


Object및 Array가 아닌것들에 대해서는 기본적으로 pass-by-value로 동작(복제)


참조 카운트 기법을 사용했으므로 참조 카운트가 0이 될 시 자동 소멸


클론 동작이 필요할 경우는 new Object(objval) 식으로 복제


배열접근에서 정수 접근시 기본적으로 Array로 동작하지만 var가 Object일 경우는 해쉬키 접근으로 바꿔버림

반대의 경우도 고려하여 유연하게 동작.


하나 만들어두면 개꿀.