2017-02-09 7 views
0

내가 (objweb::json::value이다)과 같다 코드의 조각을 가지고 :차이 :: 카사 블랑카 C++ REST에서 구문 분석 및 웹 :: JSON :: 값 : 문자열 SDK

try { 
    obj[key_str] = web::json::value::parse(value_str); 
} 
catch (...) { 
    obj[key_str] = web::json::value::string(value_str); 
} 

나는 때문에 내가 같은 문자열 "value1"catch 실행 내부에만 문으로,주는 모든 입력 value_str에 대한 둘 사이의 차이를 찾을 수 없습니다입니다.

제 질문은 정확한 차이는입니다. ::string()::parse() 사이에 무엇이 있습니까?

이 차이점을 보여주는 최소한의 예를 보여줄 수 있습니까? 필자는이 두 기능을 문서만으로 구별 할 수는 없습니다.

답변

2

구문 분석는 문자열을 받아 그것에서 JSON 객체를 형성 :

{"id": 1,"title": "test" } 

는 ID = 1을 포함하는 당신에게 크기 2의 객체를주고, 제목 = "테스트"것이다.

문자열는 문자열을 받아 그것에서 JSON 문자열을 형성한다.

나중에 예제는 "id": 1,"title": "test"을 포함하는 json 문자열을 반환합니다.

이것은 기본적으로 json 객체로 인식되지 않는 json 문자열을 구문 분석하려고한다는 것을 의미합니다. 그것은 당신이주는 예제와 함께있을 것입니다.

{"body":"body test","id":1,"title":"test","userId":1} 
4 
3 
"{\"userId\":1, \"id\": 1,\"title\": \"test\",\"body\": \"body test\"}" 
0 
2 

공지 사항 json으로 개체의 크기와 JSON 문자열 (유형 3 번 봐 인용 사이 4 대신의 크기가 0입니다 사실 : {"id": 1,"title": "test" } 복귀를 들어

parse(const std::string& s) { 
    std::cout << json.parse(s) << std::endl; 
    std::cout << json.parse(s).size() << std::endl; 
    std::cout << json.parse(s).type() << std::endl; 
    std::cout << json.string(s) << std::endl; 
    std::cout << json.string(s).size() << std::endl; 
    std::cout << json.string(s).type() << std::endl;    
} 

개체)와 2 문자열. JSON 아니다 "값 1"에 대한

, 그것은 문자열, 당신은해야합니다 : 2 객체의 크기가 0으로 여기에

"value 1" 
0 
"\"value 1\"" 
0 

공지 사항, 제 2 형 (문자열).
이것은 다음 값 유형입니다.

enum value_type 
     { 
      /// Number value 
      Number, 
      /// Boolean value 
      Boolean, 
      /// String value 
      String, 
      /// Object value 
      Object, 
      /// Array value 
      Array, 
      /// Null value 
      Null 
     }; 
+0

간단한 설명과 예제를 이용해 주셔서 감사합니다! – Kajal