2012-07-03 3 views
0

나는 jsoncpp을 사용하여 json 파일을 읽고 씁니다.jsoncpp의 StyledWriter를 사용하여 한 줄에 큰 배열 쓰기

필자는 json을 사람이 읽을 수있는 방식으로 작성하는 StyledWriter를 사용합니다.

현재 int 배열을 json 파일에 쓰려고합니다. 문서가 배열 값을 작성하기위한 다음과 같은 규칙을 설명합니다

  • 경우를 빈 다음 인쇄 [] 들여 쓰기와 줄 바꿈
  • 배열이 더 객체 값, 빈 배열 또는 다른 값 형식이 포함되지 않는 경우가없는, 모든 값이 한 행에 들어가면 한 행에 배열을 인쇄합니다.
  • 그렇지 않으면 값이 한 행에 맞지 않거나 배열에 객체 또는 비어 있지 않은 배열이있는 경우 행당 하나의 값을 인쇄하십시오. 위의 규칙에 따라

내가 작성하는 노력하고있어 배열 한 줄에 너무 큰 때문에는, 작가는 내 JSON 못생긴 덜 읽을 수있게 한 줄에 하나의 값을 출력합니다. 전체 배열을 한 줄 또는 여러 줄로 작성하고 한 줄에 여러 값을 쓰는 것을 선호합니다.

저는 jasoncpp가 오픈 소스이기 때문에 필자가 원하는 것을 수행 할 수 있다고 알고 있습니다. 하지만 다른 방법이 있는지 궁금합니다. 아마도 FastWriter (한 줄짜리 json을 만듭니다)와 StyledWriter를 모두 사용했을까요?

+0

를 [문제 열기] (https://github.com/open-source-parsers/jsoncpp/issues/new). 이것은 새로운 기능으로 추가 될 수 있습니다. – cdunn2001

답변

-1

json_writer.cpp - 2 개의 writeIndent() 메소드를 살펴보십시오.

void 
StyledStreamWriter::writeIndent() 
{ 
    /* 
    Some comments in this method would have been nice. ;-) 

    if (!document_.empty()) 
    { 
     char last = document_[document_.length()-1]; 
     if (last == ' ')  // already indented 
     return; 
     if (last != '\n') // Comments may add new-line 
     *document_ << '\n'; 
    } 
    */ 
//Removing indent and line feed!!! *document_ << '\n' << indentString_; 
} 

void 
StyledWriter::writeIndent() 
{ 
    if (!document_.empty()) 
    { 
     char last = document_[document_.length()-1]; 
     if (last == ' ')  // already indented 
     return; 
//Removing indent and line feed!!!  if (last != '\n') // Comments may add new-line 
//Removing indent and line feed!!!   document_ += '\n'; 
    } 
    document_ += indentString_; 
} 
1

다음과 같이 FastWriter을 사용해야합니다

Json::Value your_json(Json::objectValue); 
//init your json... 
Json::FastWriter fastWriter; 
fastWriter.write(your_json) 
관련 문제