JSON

protobufתjson£¬protobufjson(2)

×ÖºÅ+ ×÷ÕߣºH5Ö®¼Ò À´Ô´£ºH5Ö®¼Ò 2017-11-29 16:25 ÎÒÒªÆÀÂÛ( )

1 void NeedNotEmptyToJson(std:: string pb2jsonstring, const ::google::protobuf::Message msg, std::vector uint needs, bool Enum_2_Str, bool Showzero) 2 { 3 const Descriptor* descriptor = msg.GetDescri

    

1 void NeedNotEmptyToJson(std::string& pb2jsonstring, const ::google::protobuf::Message& msg, std::vector<uint>& needs, bool Enum_2_Str, bool Showzero) 2 { 3 const Descriptor* descriptor = msg.GetDescriptor(); 4 const Reflection* reflection = msg.GetReflection(); judge = 0; 7 std::string tmp_string; 8 std::int32_t v32=0; 9 std::uint32_t vu32=0; 10 std::int64_t v64=0; 11 std::uint64_t vu64=0; 12 double vd=0; 13 std::string str; ); (auto it=needs.begin(); it != needs.end(); ++it) 18 { 19 const FieldDescriptor* goal_field=descriptor->FindFieldByNumber(*it); (nullptr==goal_field) { 24 continue; 25 } (goal_field->is_repeated()) 28 { 29 if (reflection->FieldSize(msg, goal_field) > 0) 30 { 31 tmp_string=""; ).append(goal_field->name()).append(); ); 34 GetRepeatedJson(tmp_string, msg, goal_field, reflection, Enum_2_Str,Showzero); ); 36 judge = AppendTmpString1(pb2jsonstring,tmp_string,judge); 37 } 38 continue; 39 } 40 switch (goal_field->type()) 41 { 42 case FieldDescriptor::TYPE_MESSAGE: 43 { 44 const Message& tmp_msg = reflection->GetMessage(msg, goal_field); 45 if (0 != tmp_msg.ByteSize()) 46 { 47 tmp_string=""; ).append(goal_field->name()).append(); 49 NeedEmptyToJson(tmp_string,tmp_msg, Enum_2_Str, Showzero); 50 judge = AppendTmpString1(pb2jsonstring,tmp_string,judge); 51 } 52 } 53 break; FieldDescriptor::TYPE_INT32: 56 { 57 v32=reflection->GetInt32(msg, goal_field); 58 if(v32==0) 59 { { 62 tmp_string=""; ).append(goal_field->name()).append(); 64 tmp_string.append(std::to_string(v32)); 65 judge = AppendTmpString1(pb2jsonstring,tmp_string,judge); 66 } 67 } { 70 tmp_string=""; ).append(goal_field->name()).append(); 72 tmp_string.append(std::to_string(v32)); 73 judge = AppendTmpString1(pb2jsonstring,tmp_string,judge); 74 } 75 } 76 break; FieldDescriptor::TYPE_UINT32: 79 { 80 vu32=reflection->GetUInt32(msg, goal_field); 81 if(vu32==0) 82 { 83 if(Showzero) 84 { 85 tmp_string=""; ).append(goal_field->name()).append(); 87 tmp_string.append(std::to_string(vu32)); 88 judge = AppendTmpString1(pb2jsonstring,tmp_string,judge); 89 } 90 } { 93 tmp_string=""; ).append(goal_field->name()).append(); 95 tmp_string.append(std::to_string(vu32)); 96 judge = AppendTmpString1(pb2jsonstring,tmp_string,judge); 97 } 98 } 99 break; FieldDescriptor::TYPE_INT64: 102 { 103 v64=reflection->GetInt64(msg, goal_field); 104 if(v64==0) 105 { 106 if(Showzero) 107 { 108 tmp_string=""; ).append(goal_field->name()).append(); 110 tmp_string.append(std::to_string(v64)); 111 judge = AppendTmpString1(pb2jsonstring,tmp_string,judge); 112 } 113 } { 116 tmp_string=""; ).append(goal_field->name()).append(); 118 tmp_string.append(std::to_string(v64)); 119 judge = AppendTmpString1(pb2jsonstring,tmp_string,judge); 120 } 121 } 122 break; 123 case FieldDescriptor::TYPE_UINT64: 124 { 125 vu64=reflection->GetUInt64(msg, goal_field); 126 if(vu64==0) 127 { 128 if(Showzero) 129 { 130 tmp_string=""; ).append(goal_field->name()).append(); 132 tmp_string.append(std::to_string(vu64)); 133 judge = AppendTmpString1(pb2jsonstring,tmp_string,judge); 134 } 135 } { 138 tmp_string=""; ).append(goal_field->name()).append(); 140 tmp_string.append(std::to_string(vu64)); 141 judge = AppendTmpString1(pb2jsonstring,tmp_string,judge); 142 } 143 } 144 break; 145 case FieldDescriptor::TYPE_STRING: 146 case FieldDescriptor::TYPE_BYTES: 147 { 148 149 str=reflection->GetString(msg, goal_field); 150 if(str.empty()) 151 { 152 if(Showzero) 153 { 154 tmp_string=""; ).append(goal_field->name()).append(); ).append(str).append(); 157 judge = AppendTmpString1(pb2jsonstring,tmp_string,judge); 158 } 159 } { 162 tmp_string=""; ).append(goal_field->name()).append(); ).append(str).append(); 165 judge = AppendTmpString1(pb2jsonstring,tmp_string,judge); 166 167 } 168 } 169 break; 170 case FieldDescriptor::TYPE_DOUBLE: 171 { 172 vd=reflection->GetDouble(msg, goal_field); 173 if(vd==0) 174 { 175 if(Showzero) 176 { 177 tmp_string=""; ).append(goal_field->name()).append(); 179 tmp_string.append(std::to_string(vd)); 180 judge = AppendTmpString1(pb2jsonstring,tmp_string,judge); 181 } 182 } { 185 tmp_string=""; ).append(goal_field->name()).append(); 187 tmp_string.append(std::to_string(vd)); 188 judge = AppendTmpString1(pb2jsonstring,tmp_string,judge); 189 } 190 } 191 break; 192 case FieldDescriptor::TYPE_BOOL: 193 { 194 tmp_string=""; ).append(goal_field->name()).append(); 196 if (reflection->GetBool(msg, goal_field)) ); tmp_string.append(); 200 judge = AppendTmpString1(pb2jsonstring,tmp_string,judge); 201 202 } 203 break; 204 case FieldDescriptor::TYPE_ENUM: 205 { 206 tmp_string=""; ).append(goal_field->name()).append(); 208 if (Enum_2_Str) 209 { ).append(reflection->GetEnum(msg,goal_field)->name()).append(); 211 } { enumstr[8]; 215 memset(enumstr, 0, sizeof(enumstr)); , reflection->GetEnum(msg,goal_field)->number()); 217 tmp_string.append(enumstr); 218 } 219 judge = AppendTmpString1(pb2jsonstring,tmp_string,judge); 220 } 221 break; 222 default: 223 break; 224 } 225 } ); 227 }

¡¡

1.±¾Õ¾×ñÑ­ÐÐÒµ¹æ·¶£¬ÈκÎתÔصĸå¼þ¶¼»áÃ÷È·±ê×¢×÷ÕߺÍÀ´Ô´£»2.±¾Õ¾µÄÔ­´´ÎÄÕ£¬ÇëתÔØʱÎñ±Ø×¢Ã÷ÎÄÕÂ×÷ÕߺÍÀ´Ô´£¬²»×ðÖØÔ­´´µÄÐÐΪÎÒÃǽ«×·¾¿ÔðÈΣ»3.×÷ÕßͶ¸å¿ÉÄܻᾭÎÒÃDZ༭Ð޸Ļò²¹³ä¡£

Ïà¹ØÎÄÕÂ
  • Java BeanºÍJSONÏ໥ת»»µÄ˼·

    Java BeanºÍJSONÏ໥ת»»µÄ˼·

    2017-11-30 10:17

  • Ajax+Jsp+servlet+json¼¼ÊõµÄʹÓÃ

    Ajax+Jsp+servlet+json¼¼ÊõµÄʹÓÃ

    2017-11-29 12:22

  • ½Ì³Ì£üJSON´¦Àí1.1£ºJSONÖ¸ÕëÌôÕ½ºÍÓ¦¶Ô

    ½Ì³Ì£üJSON´¦Àí1.1£ºJSONÖ¸ÕëÌôÕ½ºÍÓ¦¶Ô

    2017-11-29 10:13

  • PythonµÄÊý¾ÝÐòÁл¯¡¸Json Pickle¡¹

    PythonµÄÊý¾ÝÐòÁл¯¡¸Json Pickle¡¹

    2017-11-28 12:09

ÍøÓѵãÆÀ
Ð