轉換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