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()) {
|
||||
a8::MutableXObject* array_obj = a8::MutableXObject::NewArray();
|
||||
std::shared_ptr<a8::XObject> repeated_field = jsonobj.At(field_name);
|
||||
for (int i = 0; i < repeated_field->Size(); ++i) {
|
||||
auto field_value = repeated_field->At(i);
|
||||
for (int i = 0; i < reflection->FieldSize(*msg, field_desc); ++i) {
|
||||
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:
|
||||
{
|
||||
array_obj->Push(reflection->GetString(*msg, field_desc));
|
||||
array_obj->Push(reflection->GetRepeatedString(*msg, field_desc, i));
|
||||
}
|
||||
break;
|
||||
case google::protobuf::FieldDescriptor::CPPTYPE_INT32:
|
||||
{
|
||||
array_obj->Push(reflection->GetInt32(*msg, field_desc));
|
||||
array_obj->Push(reflection->GetRepeatedInt32(*msg, field_desc, i));
|
||||
}
|
||||
break;
|
||||
case google::protobuf::FieldDescriptor::CPPTYPE_UINT32:
|
||||
{
|
||||
array_obj->Push(reflection->GetUInt32(*msg, field_desc));
|
||||
array_obj->Push(reflection->GetRepeatedUInt32(*msg, field_desc, i));
|
||||
}
|
||||
break;
|
||||
case google::protobuf::FieldDescriptor::CPPTYPE_INT64:
|
||||
{
|
||||
array_obj->Push(reflection->GetInt64(*msg, field_desc));
|
||||
array_obj->Push(reflection->GetRepeatedInt64(*msg, field_desc, i));
|
||||
}
|
||||
break;
|
||||
case google::protobuf::FieldDescriptor::CPPTYPE_UINT64:
|
||||
{
|
||||
array_obj->Push(reflection->GetUInt64(*msg, field_desc));
|
||||
array_obj->Push(reflection->GetRepeatedUInt64(*msg, field_desc, i));
|
||||
}
|
||||
break;
|
||||
case google::protobuf::FieldDescriptor::CPPTYPE_FLOAT:
|
||||
{
|
||||
array_obj->Push(reflection->GetFloat(*msg, field_desc));
|
||||
array_obj->Push(reflection->GetRepeatedFloat(*msg, field_desc, i));
|
||||
}
|
||||
break;
|
||||
case google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE:
|
||||
{
|
||||
array_obj->Push(reflection->GetDouble(*msg, field_desc));
|
||||
array_obj->Push(reflection->GetRepeatedDouble(*msg, field_desc, i));
|
||||
}
|
||||
break;
|
||||
case google::protobuf::FieldDescriptor::CPPTYPE_MESSAGE:
|
||||
{
|
||||
a8::MutableXObject* p = a8::MutableXObject::NewObject();
|
||||
MessageToJson(&reflection->GetMessage(*msg, field_desc),
|
||||
MessageToJson(&reflection->GetRepeatedMessage(*msg, field_desc, i),
|
||||
*p
|
||||
);
|
||||
array_obj->Push(*p);
|
||||
@ -278,6 +282,11 @@ namespace f8
|
||||
delete array_obj;
|
||||
} else {
|
||||
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:
|
||||
{
|
||||
jsonobj.SetVal(field_name, reflection->GetString(*msg, field_desc));
|
||||
|
Loading…
x
Reference in New Issue
Block a user