C ++在json中转换protobuf

     2023-02-16     101

关键词:

【中文标题】C ++在json中转换protobuf【英文标题】:C++ Converting protobuf in json 【发布时间】:2018-03-05 16:47:14 【问题描述】:

我正在尝试将一些数据从 protobuf 连接到 json。

这是我的代码的相关部分:

Message* m;
std::string json;
std::string binary_s;
...fill the message...
m->serializeToString(&binary_s);
MessageToJsonString(*m, &json);

下面的指令工作正常并产生了预期的输出。

m->serializeToString(&binary_s); 

但是当我尝试将其转换为json时,总是出现这个错误:

Program received signal SIGSEGV, Segmentation fault.
google::protobuf::DescriptorPool::FindFileByName (this=0x0,     name="FLATBUFFER_DEFINITION.proto") at google/protobuf/descriptor.cc:1415
1415      MutexLockMaybe lock(mutex_);
(gdb) backtrace
#0  google::protobuf::DescriptorPool::FindFileByName (this=0x0,     name="AutoPilot.proto")
    at google/protobuf/descriptor.cc:1415
#1  0x00007ffff7aba42d in google::protobuf::internal::AssignDescriptors     (filename="AutoPilot.proto", 
    schemas=0x4463a0 <protobuf_AutoPilot_2eproto::schemas>, 
    default_instances_=0x446500     <protobuf_AutoPilot_2eproto::file_default_instances>, 
    offsets=0x445c20 <protobuf_AutoPilot_2eproto::TableStruct::offsets>, factory=0x0, 
    file_level_metadata=0x665020 <protobuf_AutoPilot_2eproto::file_level_metadata>, 
    file_level_enum_descriptors=0x6651e0 <protobuf_AutoPilot_2eproto::file_level_enum_descriptors>, 
    file_level_service_descriptors=0x0) at google/protobuf    /generated_message_reflection.cc:2316
#2  0x000000000040730c in         protobuf_AutoPilot_2eproto::protobuf_AssignDescriptors() ()
#3  0x00007ffff7a24bd5 in google::protobuf::internal::FunctionClosure0::Run (this=0x7fffffffda90)
    at ./google/protobuf/stubs/callback.h:129
#4  google::protobuf::GoogleOnceInitImpl (
once=0x665388     <protobuf_AutoPilot_2eproto::protobuf_AssignDescriptorsOnce()::once>,     closure=0x7fffffffda90)
    at google/protobuf/stubs/once.cc:83
#5  0x0000000000433abb in google::protobuf::GoogleOnceInit(long*, void     (*)()) ()
#6  0x0000000000407383 in protobuf_AutoPilot_2eproto::protobuf_AssignDescriptorsOnce() ()
#7  0x0000000000431503 in Message::GetMetadata() const ()
#8  0x00007ffff7b536cc in google::protobuf::Message::GetDescriptor (this=0x68e0b0) at ./google/protobuf/message.h:336
#9  google::protobuf::util::MessageToJsonString (message=warning: RTTI     symbol not found for class 'Message'
..., output=0x7fffffffdd60, options=...)
    at google/protobuf/util/json_util.cc:217

似乎找不到文件“FLATBUFFER_DEFINITION.proto”,但它在可执行文件的同一目录中。

【问题讨论】:

【参考方案1】:
google::protobuf::DescriptorPool::FindFileByName **(**this=0x0**,** name="FLATBUFFER_DEFINITION.proto") at google/protobuf/descriptor.cc:1415
1415      MutexLockMaybe lock(mutex_);

对象指针为空。我打电话给 ShutdownProtobufLibrary();之后,继续使用他的功能。

【讨论】:

在 Objective c 中难以处理 json 格式

】在Objectivec中难以处理json格式【英文标题】:DifficulttohandlingjsonformattinginObjectivec【发布时间】:2017-07-2005:40:14【问题描述】:我需要从这个数组中转换json字符串(1=4;,8=20;)实际上我需要像"custom":"1":"3","8... 查看详情

如何使用 C#/LINQ 将 XML 转换为 JSON?

...发布时间】:2012-08-1517:59:01【问题描述】:我有以下需要在服务器中转换为JSON的XML文件。最初我以为我会将它转换为字典,然后使用JavaScriptSerializer将其转换为JSON,但由于每列可能有不同的值类型,我认为它不会起作用。以前... 查看详情

如何将 JSON 响应转换为表格中的表格

...einsheets【发布时间】:2019-06-2711:55:57【问题描述】:我正在向API发送请求(在Google脚本中),我收到的响应是JSON文本,如下所示:["id":26319355,"name":"1.WAW-FIRSTSESION","calendar":"GloversClick&C 查看详情

如何在不转换为json的情况下将c#数组用于javascript数组?

我有一个C#数组,其中包含C#模型列表:publicclassAlertInfo{publiclongId{get;set;}publicstringMessage{get;set;}}我将C#的数组转换为json并在javascript中使用,如下所示:JavaScriptSerializer_serializer=newJavaScriptSerializer();stringresult=_ 查看详情

将 JSON 子对象转换为 Xamarin 表单中的表

...0-0417:11:31【问题描述】:也许这是一个简单的问题,但我在互联网上没有找到任何解决方案。我有以下来自API的json数据:["userId":"6ba8da0c-b307-40b6-b858-5fb1b880d473","nomeCompleto":"Jo 查看详情

java中怎么将json字符串转换成二维数组啊?

在后台得到一个从前端传过来的JSON字符串[["name","专业a"],["notice","专业B"],["purchase","专业C"]]要怎么样才能转换成String[][]info=newString[][]"专业a","name","专业B","not... 查看详情

您可以在转换为 C# 对象的 JSON 中序列化 ByteArrayContent 吗?

】您可以在转换为C#对象的JSON中序列化ByteArrayContent吗?【英文标题】:CanyouserializeByteArrayContentinaJSONthattranslatestoC#object?【发布时间】:2021-06-1700:07:53【问题描述】:我在VSStudio中编写了一个C#WebAPI,并创建了许多DTO,这些DTO被序... 查看详情

在R中展平深层嵌套的json

】在R中展平深层嵌套的json【英文标题】:FlattendeepnestedjsoninR【发布时间】:2016-05-0719:41:21【问题描述】:我正在尝试使用R将嵌套的JSON文件转换为二维数据框。我的JSON文件具有嵌套结构。但是,不同级别的名称和属性是相同的... 查看详情

转换为 spark DataFrame 时,Json 字段默认排序

...】:当我从json文件创建数据框时,json文件中的字段默认在数据框中排序。如何避免这种排序?Jsonfile每行有一条json消息:"name":"john","age":10,"c 查看详情

如何在php中正确的使用json(转)

从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码。1、json_encode()该函数主要用来将数组和对象,转换为json格式。先看一个数组转换的例子:$arr=array(‘a‘=>1,‘b‘=>2,‘c‘=>3,‘d‘=>4,... 查看详情

在 C/C++ 中使用 ProtoBuf 进行深度复制

】在C/C++中使用ProtoBuf进行深度复制【英文标题】:Deep-copyingwithProtoBufinC/C++【发布时间】:2015-04-2721:37:51【问题描述】:假设我有一个指针数组,每个指针都指向结构体,这些结构体中可能又包含指向其他结构体的指针;是否可... 查看详情

在 LARAVEL 中转换 JSON

】在LARAVEL中转换JSON【英文标题】:ConvertJSONINLARAVEL【发布时间】:2021-09-0621:52:26【问题描述】:这是我的JSON["TIMESTAMP":"2021-06-0913:13:26","COL1":"10","COL2":"20","COL3":"30","TIMESTAMP":"2021-06-2213:13:26","COL1":"20","COL2":"30","COL3":"40 查看详情

JSON Array 无法在 Android 中转换为 JSON 对象

】JSONArray无法在Android中转换为JSON对象【英文标题】:JSONArraycannotbeconvertedtoJSONObjectinAndroid【发布时间】:2014-10-2404:05:40【问题描述】:我想从JSON填充微调器。我在日志cat.但没有在Spinner中获取正确打印响应。这是我的json格式JSON... 查看详情

如何在 kotlin 中转换这个复杂的 json

】如何在kotlin中转换这个复杂的json【英文标题】:Howtoconvertthiscomplexjsoninkotlin【发布时间】:2021-11-0904:01:35【问题描述】:我想将此Json文件转换为kotlin:"results":"ALL":"currencyName":"AlbanianLek","currencySymbol":"Lek","id":"ALL","XCD":"currencyName... 查看详情

在 Objective C (iOS) 中解析 JSON

】在ObjectiveC(iOS)中解析JSON【英文标题】:ParsingJSONinObjectiveC(iOS)【发布时间】:2012-07-0612:53:12【问题描述】:我在ObjectiveC中解析JSON字符串时遇到问题:我的JSON:"messages":["nick":"Tim","message":"Hallo","time":"06.07.201213:26:41"]我的目标C代... 查看详情

在C中从二进制转换为char

】在C中从二进制转换为char【英文标题】:ConvertfromabinarytocharinC【发布时间】:2012-06-0505:10:20【问题描述】:我对如何在c中将二进制值转换为char感到困惑。例如,假设我有01010110并想从中打印相应的字母“V”。我该怎么做呢?... 查看详情

如何在 JSON 对象中转换转义的 JSON 字符串?

】如何在JSON对象中转换转义的JSON字符串?【英文标题】:HowdoIconvertanescapedJSONstringwithinaJSONobject?【发布时间】:2017-01-0209:40:27【问题描述】:我从一个公共API接收一个JSON对象,该对象的属性本身就是一个转义的JSON字符串。"respo... 查看详情

在关于转换对象的地址空间的 c 样式类型转换过程中实际发生了啥?

】在关于转换对象的地址空间的c样式类型转换过程中实际发生了啥?【英文标题】:whatactuallyhappensduringac-styletypecastingregardingaddressspaceofcastedobjects?在关于转换对象的地址空间的c样式类型转换过程中实际发生了什么?【发布时间... 查看详情