1
This commit is contained in:
parent
6d4d04235b
commit
a24a743b05
29
cpp/utils.cc
29
cpp/utils.cc
@ -219,48 +219,52 @@ namespace f8
|
|||||||
if (field_desc->is_repeated()) {
|
if (field_desc->is_repeated()) {
|
||||||
a8::MutableXObject* array_obj = a8::MutableXObject::NewArray();
|
a8::MutableXObject* array_obj = a8::MutableXObject::NewArray();
|
||||||
std::shared_ptr<a8::XObject> repeated_field = jsonobj.At(field_name);
|
std::shared_ptr<a8::XObject> repeated_field = jsonobj.At(field_name);
|
||||||
for (int i = 0; i < repeated_field->Size(); ++i) {
|
for (int i = 0; i < reflection->FieldSize(*msg, field_desc); ++i) {
|
||||||
auto field_value = repeated_field->At(i);
|
|
||||||
switch (field_desc->cpp_type()) {
|
switch (field_desc->cpp_type()) {
|
||||||
|
case google::protobuf::FieldDescriptor::CPPTYPE_BOOL:
|
||||||
|
{
|
||||||
|
array_obj->Push(reflection->GetRepeatedBool(*msg, field_desc, i));
|
||||||
|
}
|
||||||
|
break;
|
||||||
case google::protobuf::FieldDescriptor::CPPTYPE_STRING:
|
case google::protobuf::FieldDescriptor::CPPTYPE_STRING:
|
||||||
{
|
{
|
||||||
array_obj->Push(reflection->GetString(*msg, field_desc));
|
array_obj->Push(reflection->GetRepeatedString(*msg, field_desc, i));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case google::protobuf::FieldDescriptor::CPPTYPE_INT32:
|
case google::protobuf::FieldDescriptor::CPPTYPE_INT32:
|
||||||
{
|
{
|
||||||
array_obj->Push(reflection->GetInt32(*msg, field_desc));
|
array_obj->Push(reflection->GetRepeatedInt32(*msg, field_desc, i));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case google::protobuf::FieldDescriptor::CPPTYPE_UINT32:
|
case google::protobuf::FieldDescriptor::CPPTYPE_UINT32:
|
||||||
{
|
{
|
||||||
array_obj->Push(reflection->GetUInt32(*msg, field_desc));
|
array_obj->Push(reflection->GetRepeatedUInt32(*msg, field_desc, i));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case google::protobuf::FieldDescriptor::CPPTYPE_INT64:
|
case google::protobuf::FieldDescriptor::CPPTYPE_INT64:
|
||||||
{
|
{
|
||||||
array_obj->Push(reflection->GetInt64(*msg, field_desc));
|
array_obj->Push(reflection->GetRepeatedInt64(*msg, field_desc, i));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case google::protobuf::FieldDescriptor::CPPTYPE_UINT64:
|
case google::protobuf::FieldDescriptor::CPPTYPE_UINT64:
|
||||||
{
|
{
|
||||||
array_obj->Push(reflection->GetUInt64(*msg, field_desc));
|
array_obj->Push(reflection->GetRepeatedUInt64(*msg, field_desc, i));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case google::protobuf::FieldDescriptor::CPPTYPE_FLOAT:
|
case google::protobuf::FieldDescriptor::CPPTYPE_FLOAT:
|
||||||
{
|
{
|
||||||
array_obj->Push(reflection->GetFloat(*msg, field_desc));
|
array_obj->Push(reflection->GetRepeatedFloat(*msg, field_desc, i));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE:
|
case google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE:
|
||||||
{
|
{
|
||||||
array_obj->Push(reflection->GetDouble(*msg, field_desc));
|
array_obj->Push(reflection->GetRepeatedDouble(*msg, field_desc, i));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case google::protobuf::FieldDescriptor::CPPTYPE_MESSAGE:
|
case google::protobuf::FieldDescriptor::CPPTYPE_MESSAGE:
|
||||||
{
|
{
|
||||||
a8::MutableXObject* p = a8::MutableXObject::NewObject();
|
a8::MutableXObject* p = a8::MutableXObject::NewObject();
|
||||||
MessageToJson(&reflection->GetMessage(*msg, field_desc),
|
MessageToJson(&reflection->GetRepeatedMessage(*msg, field_desc, i),
|
||||||
*p
|
*p
|
||||||
);
|
);
|
||||||
array_obj->Push(*p);
|
array_obj->Push(*p);
|
||||||
@ -278,6 +282,11 @@ namespace f8
|
|||||||
delete array_obj;
|
delete array_obj;
|
||||||
} else {
|
} else {
|
||||||
switch (field_desc->cpp_type()) {
|
switch (field_desc->cpp_type()) {
|
||||||
|
case google::protobuf::FieldDescriptor::CPPTYPE_BOOL:
|
||||||
|
{
|
||||||
|
jsonobj.SetVal(field_name, reflection->GetBool(*msg, field_desc));
|
||||||
|
}
|
||||||
|
break;
|
||||||
case google::protobuf::FieldDescriptor::CPPTYPE_STRING:
|
case google::protobuf::FieldDescriptor::CPPTYPE_STRING:
|
||||||
{
|
{
|
||||||
jsonobj.SetVal(field_name, reflection->GetString(*msg, field_desc));
|
jsonobj.SetVal(field_name, reflection->GetString(*msg, field_desc));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user