第一步、引入fastjson的依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.35</version> </dependency>
第二步、使用 JSON.parse() 将 String 类型的数据转换成 JSON 格式
举个例子:
JSON.parse({"name": "getcharzp"})
java中将String转化为json
JSONObject parent = (JSONObject) JSONObject.parse(insertContent);
第一步、引入fastjson的依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.35</version> </dependency>第二步、使用 JSON.parse() 将 String 类型的数据转换成 JSON 格式
举个例子:
JSON.parse({"name": "getcharzp"})
javabeanX具有N个属性均为StringX数组x1-x6属性A属性B属性Cx1a1b4c1x2a1b4c1x3a2b1c3x4a2b1c4x5a3b2c2x6a3b3c1最终想转化为hashmap进而转化为json树如下结果[{name:a1,count:2,childr...
java bean X 具有N个属性均为 String
X数组 x1-x6
属性A 属性B 属性C
x1 a1 b4 c1
x2 a1 b4 c1
x3 a2 b1 c3
x4 a2 b1 c4
x5 a3 b2 c2
x6 a3 b3 c1
最终想转化为hashmap 进而转化为json树
如下结果
[
{name: a1 ,count:2 ,children:[ { name:b4 ,count:2 ,children :[{ name :c1,count:2}]} ] }
{name: a2 , count:2,chuldren:[{name:b1,count:2,children:[{name:c3,count:1},
{name:c4,count:1},]}]}
{name: a3 , count:2,chuldren:[{name:b1,count:1,children:[{name:c2 ,count:1}] },
{name:b3,count:1,children:[{name:c1 ,count:1}] } }
]
当属性为N个时,需要一个通用的方法。求助 ,采纳后追加分数
展开
前言
本文讲解如何在java项目中,打印protobuf的结构体为 json。如果你刚刚接触到java和protobuf开发,这篇文章可以帮助到您。
问题
如果你直接用fastjson或者gson等转换对象为json string,你会报错。
比如你用
JSON.toJSONString(grpcService.getUserInfo());
报错像这样
: write javaBean error, fastjson version 1.2.56, class com.google.protobuf.Descriptors$FieldDescriptor,write javaBean error, fastjson version 1.2.56, class com.google.protobuf.Descriptors$Descriptor, fieldName : ***, write javaBean error,fastjson version 1.2.56,class com.google.protobuf.Descriptors$FieldDescriptor, fieldName : 1
正确打印为json
我们需要用内置的方法
需要先引入 这个包
import com.google.protobuf.util.JsonFormat;
然后在需要打印(获取json字符串的位置,编码)
JsonFormat.printer().includingDefaultValueFields() .print(grpcService.getUserInfo());
print(方法里是你的服务和方法)
这样就能获取到json格式的文本了。
JsonFormat.printer()获取一个打印工具类
includingDefaultValueFields 把所有的结构都带上
print 打印最终的目标对象