有一个被pb协议转为Srring的repeated字段数据,如何使用Java,把这个String转回repeated字段的list,注意如果使用T.Builder,指明import正确的包
时间: 2023-04-10 19:04:00 浏览: 159
详解protobuf-c之在C语言中如何使用repeated生成数组和字符串(包含配置pb-callback-t)
您好,可以使用protobuf提供的parseFrom方法将String转换为repeated字段的list。具体代码如下:
```
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.util.JsonFormat;
import java.util.List;
public class Main {
public static void main(String[] args) throws InvalidProtocolBufferException {
// 假设这是一个被pb协议转为String的repeated字段数据
String repeatedData = "[{\"id\":1,\"name\":\"Alice\"},{\"id\":2,\"name\":\"Bob\"}]";
// 将String转换为protobuf的json格式
String jsonFormat = "{\"data\":" + repeatedData + "}";
DataOuterClass.Data.Builder builder = DataOuterClass.Data.newBuilder();
JsonFormat.parser().ignoringUnknownFields().merge(jsonFormat, builder);
// 获取repeated字段的list
List<DataOuterClass.Person> personList = builder.build().getDataList();
for (DataOuterClass.Person person : personList) {
System.out.println(person.getId() + " " + person.getName());
}
}
}
```
其中,DataOuterClass是protobuf生成的Java类,包含了Data和Person两个message。在这个例子中,我们将String转换为protobuf的json格式,然后使用JsonFormat.parser().ignoringUnknownFields().merge方法将json格式的数据合并到Data.Builder中,最后通过getDataList方法获取repeated字段的list。
阅读全文