转换string strjson
后const char* json
,当interate,显示 失败:(IsObject()
),功能FindMember
,失败了,我不明白为什么这显示出,我觉得这个json
对象是正确的格式。将字符串转换为const * json后,当放置json对象时,显示失败:(IsObject()),如何解决这个问题?
//
// main.cpp
// rapid
//
// Created by Shi Yan on 10/7/17.
// Copyright © 2017 Shi Yan. All rights reserved.
//
#include <iostream>
#include "rapidjson.h"
#include "document.h"
#include <fstream>
using namespace std;
using namespace rapidjson;
void readjson(){
ifstream handle("meta_Books.json");
if(handle.is_open()){
//cout<<"open success"<<endl;
const char* json;
string strjson;
int i=1;
while(getline(handle,strjson)){
if(i>4)
break;
cout<<strjson<<endl;
cout<<strjson.length()<<endl;
i++;
json=strjson.c_str();
cout<<"*********************"<<endl;
cout<<*json<<endl;
StringStream s (json);
Document document;
document.ParseStream(s);
Value::ConstMemberIterator itr = document.FindMember("asin");
cout<<itr->name.GetString()<<" = "<< itr->value.GetString()<<endl;
}
}
}
int main() {
readjson();
return 0;
}
我认为json对象的格式,为什么失败?
正如你所看到的,getline()
方法效果很好,因为串的输出是一个完整的字符串
注意,此线'COUT << * JSON << ENDL;'正在输出char数组中的单个字符(通过取消引用'const char *'得到'char') –
但是在前两个输出中,我得到正确答案来查询key =“asin”的值,但是,在处理第三个对象,它失败了。解析第二个对象是正常的,所以我认为不用用一个对象开始就没有它的根。但为什么解析失败? – shiyan
我已经知道为什么要得到第一个字符,谢谢史蒂夫 – shiyan