本文整理汇总了C++中Document::IsArray方法的典型用法代码示例。如果您正苦于以下问题:C++ Document::IsArray方法的具体用法?C++ Document::IsArray怎么用?C++ Document::IsArray使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Document
的用法示例。
在下文中一共展示了Document::IsArray方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: a
TYPED_TEST(DocumentMove, MoveAssignment) {
typedef TypeParam Allocator;
typedef GenericDocument<UTF8<>, Allocator> Document;
Allocator allocator;
Document a(&allocator);
a.Parse("[\"one\", \"two\", \"three\"]");
EXPECT_FALSE(a.HasParseError());
EXPECT_TRUE(a.IsArray());
EXPECT_EQ(3u, a.Size());
EXPECT_EQ(&a.GetAllocator(), &allocator);
// Document b; b = a; // does not compile (!is_copy_assignable)
Document b;
b = std::move(a);
EXPECT_TRUE(a.IsNull());
EXPECT_TRUE(b.IsArray());
EXPECT_EQ(3u, b.Size());
EXPECT_EQ(&a.GetAllocator(), (void*)0);
EXPECT_EQ(&b.GetAllocator(), &allocator);
b.Parse("{\"Foo\": \"Bar\", \"Baz\": 42}");
EXPECT_FALSE(b.HasParseError());
EXPECT_TRUE(b.IsObject());
EXPECT_EQ(2u, b.MemberCount());
// Document c; c = a; // does not compile (see static_assert)
Document c;
c = std::move(b);
EXPECT_TRUE(b.IsNull());
EXPECT_TRUE(c.IsObject());
EXPECT_EQ(2u, c.MemberCount());
EXPECT_EQ(&b.GetAllocator(), (void*)0);
EXPECT_EQ(&c.GetAllocator(), &allocator);
}
示例2: parseAttributeValue
/* ****************************************************************************
*
* parseAttributeValue -
*/
std::string parseAttributeValue(ConnectionInfo* ciP, ContextAttribute* caP)
{
Document document;
OrionError oe;
document.Parse(ciP->payload);
if (document.HasParseError())
{
alarmMgr.badInput(clientIp, "JSON parse error");
oe.reasonPhrase = ERROR_STRING_PARSERROR;
oe.details = "Errors found in incoming JSON buffer";
ciP->httpStatusCode = SccBadRequest;;
return oe.render(ciP, "");
}
if (!document.IsObject() && !document.IsArray())
{
alarmMgr.badInput(clientIp, "JSON parse error");
oe.fill(SccBadRequest, "Neither JSON Object nor JSON Array for attribute::value");
ciP->httpStatusCode = SccBadRequest;;
return oe.render(ciP, "");
}
caP->valueType = (document.IsObject())? orion::ValueTypeObject : orion::ValueTypeVector;
parseContextAttributeCompoundValueStandAlone(document, caP, caP->valueType);
return "OK";
}
示例3: carregaContornos
void SistemaTransportePublico::carregaContornos(int linha, string arquivo) {
// valida parametros
if ((arquivo.size() == 0) || (linha < 0))
{
log->LOG("parametros invalidos.");
return;
}
// verifica se arquivo existe
std::ifstream t (arquivo.c_str());
if (!t)
{
log->LOG("arquivo nao existe");
return;
}
// transforma arquivo de ifstream para string
std::string str;
t.seekg(0, std::ios::end);
str.reserve(t.tellg());
t.seekg(0, std::ios::beg);
str.assign((std::istreambuf_iterator<char>(t)),
std::istreambuf_iterator<char>());
if (str.length() == 0)
{
log->LOG("arquivo vazio");
return;
}
// parse de string para JSON
Document d;
d.Parse(str.c_str());
assert(d.IsArray());
for (SizeType i = 0; i < d.Size(); i++)
{
assert(d[i].IsObject());
assert(d[i].HasMember(JSON_PONTO_LATITUDE));
assert(d[i][JSON_PONTO_LATITUDE].IsString());
assert(d[i].HasMember(JSON_PONTO_LONGITUDE));
assert(d[i][JSON_PONTO_LONGITUDE].IsString());
string lat = d[i][JSON_PONTO_LATITUDE].GetString();
lat[3]='.';
string lon = d[i][JSON_PONTO_LONGITUDE].GetString();
lon[3]='.';
Coordenada c (lat, lon);
//log->debug("coord: " + lat + ", " + lon );
insereContorno (linha, c);
}
log->LOG("contornos inseridos: " + convert::intToString(d.Size()));
}
示例4: ParseString
virtual bool ParseString(const char* json, std::string& s) const {
Document doc;
#ifdef TEST_INSITU
RapidjsonParseResult pr(json, strlen(json));
doc.ParseInsitu<TEST_PARSE_FLAG>(pr.buffer);
#else
doc.Parse<TEST_PARSE_FLAG>(json);
#endif
if (!doc.HasParseError() && doc.IsArray() && doc.Size() == 1 && doc[0].IsString()) {
s = std::string(doc[0].GetString(), doc[0].GetStringLength());
return true;
}
return false;
}
示例5: ParseDouble
virtual bool ParseDouble(const char* json, double* d) const {
Document doc;
#ifdef TEST_INSITU
RapidjsonParseResult pr(json, strlen(json));
doc.ParseInsitu<TEST_PARSE_FLAG>(pr.buffer);
#else
doc.Parse<TEST_PARSE_FLAG>(json);
#endif
if (!doc.HasParseError() && doc.IsArray() && doc.Size() == 1 && doc[0].IsNumber()) {
*d = doc[0].GetDouble();
return true;
}
return false;
}
示例6: carregaLinhas
void SistemaTransportePublico::carregaLinhas(string arquivo) {
// valida parametro
if (arquivo.size() == 0)
return;
log->LOG("carregando arquivo de linhas: " + arquivo);
// verifica se arquivo existe
std::ifstream t (arquivo.c_str());
if (!t)
{
log->LOG("arquivo nao existe");
return;
}
// transforma arquivo de ifstream para string
std::string str;
t.seekg(0, std::ios::end);
str.reserve(t.tellg());
t.seekg(0, std::ios::beg);
str.assign((std::istreambuf_iterator<char>(t)),
std::istreambuf_iterator<char>());
// parse de string para JSON
Document d;
d.Parse(str.c_str());
assert(d.IsArray());
cout << d.Size() << endl;
for (SizeType i = 0; i < d.Size(); i++)
{
assert(d[i].IsObject());
assert(d[i].HasMember(JSON_LINHA_CODIGO));
assert(d[i][JSON_LINHA_CODIGO].IsString());
assert(d[i].HasMember(JSON_LINHA_NOME));
assert(d[i][JSON_LINHA_NOME].IsString());
Linha *l = new Linha (d[i][JSON_LINHA_CODIGO].GetString(),
d[i][JSON_LINHA_NOME].GetString());
log->LOG("cod: " + string(d[i][JSON_LINHA_CODIGO].GetString()) + " nome: " +
string(d[i][JSON_LINHA_NOME].GetString()));
insereLinha (l);
}
log->LOG("linhas inseridas: " + convert::intToString(d.Size()));
}
示例7: loadTags
void Roi::loadTags(string host) {
char url[host.length() + 17 + 10];
sprintf(url, "http://%s/roi/%u/tags", host.c_str(), id);
const char* tagJSON = curlGet(url).c_str();
// Parse metadata
Document document;
if(document.Parse<0>(tagJSON).HasParseError() || !document.IsArray()) {
// Failed to parse
fprintf(stderr, "Error Parsing metadata JSON");
return;
}
for(SizeType i = 0; i < document.Size(); i++) {
tags.push_back(document[i].GetUint());
}
}
示例8:
TEST(Document, UnchangedOnParseError) {
Document doc;
doc.SetArray().PushBack(0, doc.GetAllocator());
ParseResult err = doc.Parse("{]");
EXPECT_TRUE(doc.HasParseError());
EXPECT_EQ(err.Code(), doc.GetParseError());
EXPECT_EQ(err.Offset(), doc.GetErrorOffset());
EXPECT_TRUE(doc.IsArray());
EXPECT_EQ(doc.Size(), 1u);
err = doc.Parse("{}");
EXPECT_FALSE(doc.HasParseError());
EXPECT_FALSE(err.IsError());
EXPECT_EQ(err.Code(), doc.GetParseError());
EXPECT_EQ(err.Offset(), doc.GetErrorOffset());
EXPECT_TRUE(doc.IsObject());
EXPECT_EQ(doc.MemberCount(), 0u);
}
示例9: nameArrayFromData
std::vector<name_t> nameArrayFromData(const char *jsonData, size_t len) {
std::vector<char> buffer(len + 1);
std::memcpy(&buffer[0], jsonData, len);
Document doc;
doc.ParseInsitu(&buffer[0]);
assert(doc.IsArray());
std::vector<name_t> nameArray;
nameArray.reserve(doc.Size());
for( auto array_item = doc.Begin(); array_item != doc.End(); array_item++ ) {
name_t instance = name_t(*array_item);
nameArray.push_back(instance);
}
return nameArray;
}
示例10: loadRois
void LabeledImage::loadRois(string host) {
// URL: host/image/id/rois
rois.clear();
char url[host.length() + 19 + 10];
sprintf(url, "http://%s/image/%u/rois", host.c_str(), id);
const char* roiJSON = curlGet(url).c_str();
// Parse ROIs
Document document;
if(document.Parse<0>(roiJSON).HasParseError() || !document.IsArray()) {
fprintf(stderr, "Error Parsing ROI JSON");
return;
}
for(uint32_t i = 0; i < document.Size(); i++) {
// Build an ROI
Roi *roi = new Roi();
roi->loadFromDocument(document[i]);
rois.push_back(roi);
}
}
示例11: carregaRotas
void SistemaTransportePublico::carregaRotas(string linha, string arquivo) {
// valida parametros
if ((arquivo.size() == 0) || (linha.size() == 0))
{
log->LOG("parametros vazios.");
return;
}
log->LOG("carregando arquivo de pontos: " + arquivo +
" da linha " + linha);
// verifica se arquivo existe
std::ifstream t (arquivo.c_str());
if (!t)
{
log->LOG("arquivo nao existe");
return;
}
// transforma arquivo de ifstream para string
std::string str;
t.seekg(0, std::ios::end);
str.reserve(t.tellg());
t.seekg(0, std::ios::beg);
str.assign((std::istreambuf_iterator<char>(t)),
std::istreambuf_iterator<char>());
if (str.length() == 0)
{
log->LOG("arquivo vazio");
return;
}
// parse de string para JSON
Document d;
d.Parse(str.c_str());
assert(d.IsArray());
cout << d.Size() << endl;
for (SizeType i = 0; i < d.Size(); i++)
{
assert(d[i].IsObject());
assert(d[i].HasMember(JSON_PONTO_NOME));
assert(d[i][JSON_PONTO_NOME].IsString());
assert(d[i].HasMember(JSON_PONTO_LATITUDE));
assert(d[i][JSON_PONTO_LATITUDE].IsString());
assert(d[i].HasMember(JSON_PONTO_LONGITUDE));
assert(d[i][JSON_PONTO_LONGITUDE].IsString());
assert(d[i].HasMember(JSON_PONTO_TIPO));
assert(d[i][JSON_PONTO_TIPO].IsString());
assert(d[i].HasMember(JSON_PONTO_NUMERO));
assert(d[i][JSON_PONTO_NUMERO].IsString());
assert(d[i].HasMember(JSON_PONTO_SENTIDO));
assert(d[i][JSON_PONTO_SENTIDO].IsString());
assert(d[i].HasMember(JSON_PONTO_SEQUENCIA));
assert(d[i][JSON_PONTO_SEQUENCIA].IsString());
string lat = d[i][JSON_PONTO_LATITUDE].GetString();
lat[3]='.';
string lon = d[i][JSON_PONTO_LONGITUDE].GetString();
lon[3]='.';
Coordenada c (lat, lon);
PontoLinha *p = new PontoLinha(
d[i][JSON_PONTO_NOME].GetString(),
d[i][JSON_PONTO_NUMERO].GetString(),
d[i][JSON_PONTO_TIPO].GetString(),
d[i][JSON_PONTO_SENTIDO].GetString(),
0,
0,
c
);
cout << "ponto: " << d[i][JSON_PONTO_NOME].GetString()
<< " lat " << lat
<< " lon " << lon
<< endl;
inserePontoLinha (linha, p);
}
log->LOG("pontos inseridos:" + convert::intToString(d.Size()));
}
示例12: carregaArquivoVeiculos
void SistemaTransportePublico::carregaArquivoVeiculos(string arquivo) {
// verifica se arquivo existe
std::ifstream t (arquivo.c_str());
if (!t)
{
log->LOG("arquivo nao existe");
return;
}
int ind = arquivo.find("veiculoslinhas-");
if (ind < 0)
{
log->LOG("arquivo invalido de posicoes");
return;
}
// extrai data e hora
ind = arquivo.find("--")+2;
string data = arquivo.substr(ind, 8);
// ind = arquivo.find(".")-6;
// string hora = arquivo.substr(ind, 6);
// transforma arquivo de ifstream para string
std::string str;
t.seekg(0, std::ios::end);
str.reserve(t.tellg());
t.seekg(0, std::ios::beg);
str.assign((std::istreambuf_iterator<char>(t)),
std::istreambuf_iterator<char>());
// parse de string para JSON
Document d;
d.Parse(str.c_str());
assert(d.IsArray());
cout << d.Size() << endl;
for (SizeType i = 0; i < d.Size(); i++)
{
assert(d[i].IsObject());
assert(d[i].HasMember(JSON_VEICULO_LINHA));
assert(d[i][JSON_VEICULO_LINHA].IsString());
assert(d[i].HasMember(JSON_VEICULO_PREFIXO));
assert(d[i][JSON_VEICULO_PREFIXO].IsString());
assert(d[i].HasMember(JSON_VEICULO_LAT));
assert(d[i][JSON_VEICULO_LAT].IsString());
assert(d[i].HasMember(JSON_VEICULO_LONG));
assert(d[i][JSON_VEICULO_LONG].IsString());
assert(d[i].HasMember(JSON_VEICULO_HORA));
assert(d[i][JSON_VEICULO_HORA].IsString());
// assert(d[i].HasMember(JSON_VEICULO_ADAP));
// assert(d[i][JSON_VEICULO_ADAP].IsString());
string lat = d[i][JSON_PONTO_LATITUDE].GetString();
lat[3]='.';
string lon = d[i][JSON_PONTO_LONGITUDE].GetString();
lon[3]='.';
Coordenada c (lat, lon);
LocalVeiculo *l = new LocalVeiculo (
d[i][JSON_VEICULO_PREFIXO].GetString(),
data,
d[i][JSON_VEICULO_HORA].GetString(),
c
);
inserePosicaoVeiculo (d[i][JSON_VEICULO_LINHA].GetString(),
l);
}
log->LOG("posicoes de veiculos inseridas: " + convert::intToString(d.Size()));
}