2017-08-30 17 views
0

それは初心者の質問、私はSTDへの文字列の次のJSON配列をフォーマットする方法を ::文字列ここでフォーマットのJSONコード::文字列

[ 
    { 
    "x" : 12.1, 
    "y" : 12.1, 
    "z" : 12.1 
    }, 
    { 
    "x" : 12.1, 
    "y" : 12.1, 
    "z" : 12.1 
    }, 
    { 
    "x" : 12.1, 
    "y" : 12.1, 
    "z" : 12.1 
    }, 
    { 
    "x" : 12.1, 
    "y" : 12.1, 
    "z" : 12.1 
    } 
] 

は、JSON文字列

const std::string json = 
      "[\n" 
      " {\n" 
      " \"x\" : 0,\n" 
      " \"y\" : 0,\n" 
      " \"z\" : 0\n" 
      " },\n" 
      " {\n" 
      " \"x\" : 640,\n" 
      " \"y\" : 0,\n" 
      " \"z\" : 0\n" 
      " },\n" 
      " {\n" 
      " \"x\" : 640,\n" 
      " \"y\" : 0,\n" 
      " \"z\" : 480\n" 
      " },\n" 
      " {\n" 
      " \"x\" : 0,\n" 
      " \"y\" : 0,\n" 
      " \"z\" : 480\n" 
      " }\n" 
      "]\n"; 


     Json::Value coordinates; 
     Json::Reader reader; 

     reader.parse(json, coordinates); 
あります

私は上記のjson配列を解析して座標のリストを取得しようとしていますが、正しく解析することはできません。

+0

JSON * *文字列です。コードではありません。 '' {{"x:12.1}、{" x ":12.1"} ""はJson文字列です。どういう意味ですか? –

+0

私の質問std :: stringにそのjsonを書く方法を作成しようとしています – andre

+0

ちょうど他の文字列のように。 Jsonは文字列で、その内容は特定の形式です。これ以上何もない。 –

答えて

4

あなたはC++ 11以降生の文字列を使用する場合があります。

const std::string json = R"(
[ 
    { 
    "x" : 12.1, 
    "y" : 12.1, 
    "z" : 12.1 
    }, 
    { 
    "x" : 12.1, 
    "y" : 12.1, 
    "z" : 12.1 
    }, 
    { 
    "x" : 12.1, 
    "y" : 12.1, 
    "z" : 12.1 
    }, 
    { 
    "x" : 12.1, 
    "y" : 12.1, 
    "z" : 12.1 
    } 
] 
)"; 

、あなたには、いくつかの"としてエスケープしなければならない前に - >\"

const std::string json = 
"[\n" 
" {\n" 
" \"x\" : 12.1,\n" 
" \"y\" : 12.1,\n" 
" \"z\" : 12.1\n" 
" },\n" 
" {\n" 
" \"x\" : 12.1,\n" 
" \"y\" : 12.1,\n" 
" \"z\" : 12.1\n" 
" },\n" 
" {\n" 
" \"x\" : 12.1,\n" 
" \"y\" : 12.1,\n" 
" \"z\" : 12.1\n" 
" },\n" 
" {\n" 
" \"x\" : 12.1,\n" 
" \"y\" : 12.1,\n" 
" \"z\" : 12.1\n" 
" }\n" 
"]\n"; 
+0

' \ n' 。完全性のために:http:// prefix.cppreference.com/w/cpp/language/string_literal参照: 'prefix(オプション)R"区切り文字(raw_characters)区切り文字 "\t(6)\t(C++ 11以降)'。 –

+0

ありがとうございました! – andre

+0

完全な答えのためにRawを使わずに書くことができます – andre