有规律的数组字符串如何转json格式?

起床搬砖 2020-09-18 02:32:22
示例:
String data = [{a=1, b={aa = 1, bb = 1}, c = 1}, {a=2, b={aa = 2, bb = 2}, c = 2}, {a=3, b={aa = 3, bb = 3}, c = 3}]

如示例中,这是一个字符串的数组,数组中可能会有多个参数(a,b,c,...),其中某个参数例如b会存在二级json,像这样的字符串应该怎么解析转成json呢,才能才能快速拿到想要的值呢?解析了好一会没解析出来,有没有大佬上代码教学下~
...全文
8769 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39936465 2020-09-21
  • 打赏
  • 举报
回复
引用 6 楼 我是头象 的回复:
[quote=引用 4 楼 ourhouzi 的回复:]一个个字符遍历, 先找{}对, { 左+1 ; }右+1 当前碰到 } 且左==右 为一个实体块。 实体块内部是用,(在{}内的,不算)转成实体 ;然后在实体块内找下一个实体块。
有没有不通过实体类解决的方法,就单纯一个转json的方法[/quote] 试试看下面的行不行

public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str="";
		String data = "[{a=1, b={aa= 1, bb = 1}, c = 1}, {a=2, b={aa = 2, bb = 2}, c = 2}, {a=3, b={aa = 3, bb = 3}, c = 3},{a=:,b= {aa==,bb=:},c==}]";
		String[] s=data.split("==");
		for(int i=0;i<s.length;i++) {
			s[i]=s[i].replace("=", "\":\"");
			if((i+1)<s.length) {
				str=str+s[i]+"\"=\":";
			}else {
				str=str+s[i];
			}
		}
		str = str.replace(",","\",\"");
		str=str.replace("{", "{\"");
		str=str.replace("}", "\"}");
		str=str.substring(1, str.length()-1);
		System.out.println(str);
	}
起床搬砖 2020-09-21
  • 打赏
  • 举报
回复
引用 4 楼 ourhouzi 的回复:
一个个字符遍历, 先找{}对, { 左+1 ; }右+1 当前碰到 } 且左==右 为一个实体块。 实体块内部是用,(在{}内的,不算)转成实体 ;然后在实体块内找下一个实体块。
有没有不通过实体类解决的方法,就单纯一个转json的方法
起床搬砖 2020-09-21
  • 打赏
  • 举报
回复
引用 3 楼 smileNicky 的回复:
先弄成json数据,借助fastjson or jackson转换
现在我就是转json转不出来。。
ourhouzi 2020-09-21
  • 打赏
  • 举报
回复
引用 6 楼 我是头象 的回复:
[quote=引用 4 楼 ourhouzi 的回复:]一个个字符遍历, 先找{}对, { 左+1 ; }右+1 当前碰到 } 且左==右 为一个实体块。 实体块内部是用,(在{}内的,不算)转成实体 ;然后在实体块内找下一个实体块。
有没有不通过实体类解决的方法,就单纯一个转json的方法[/quote] 不通过实体,就自己转。按上面的方法找到一个块 如 {a=1, b={aa = 1, bb = 1}, c = 1}, 按不在{}内的, 分割成若干块,每一块都是 参数 = 内容 。把=改成: 内容添加引号(因为你说不一定是数字那就全部按字符串来处理), 如果内容中有{} 就继续分解
起床搬砖 2020-09-19
  • 打赏
  • 举报
回复
引用 1 楼 KeepSayingNo 的回复:
你用replace方法把所有的“=”变成 “:”,然后遍历这个字符串,发现“:”将它左边的字符用""套上,这样就是json串了
这个值不一定都是数字...值中有可能会有等于号或者:
ourhouzi 2020-09-19
  • 打赏
  • 举报
回复
一个个字符遍历, 先找{}对, { 左+1 ; }右+1 当前碰到 } 且左==右 为一个实体块。 实体块内部是用,(在{}内的,不算)转成实体 ;然后在实体块内找下一个实体块。
Nicky.Ma 2020-09-19
  • 打赏
  • 举报
回复
先弄成json数据,借助fastjson or jackson转换
KeepSayingNo 2020-09-18
  • 打赏
  • 举报
回复
你用replace方法把所有的“=”变成 “:”,然后遍历这个字符串,发现“:”将它左边的字符用""套上,这样就是json串了

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧