java格式错误怎么办_Java - 如何修复格式不正确的JSON?

这是一个有点难以取消了解你真正需要的东西。

从这个输入字符串:

{

ssid:"test1"

psk:"test154695"

key_mgmt:WPA-PSK

sim_slot:"-1"

imsi:"none"

priority:1

}

看来要得到这个输出字符串:

{

"ssid": "test1",

"psk": "test154695",

"key_mgmt": "WPA-PSK",

"sim_slot": "-1",

"imsi": "none",

"priority": 1

}

我看到的差异:

添加双引号键值,

添加双引号的key_mgmt值,转向WPA-PSK到"WPA-PSK"

添加一个空格后:

每个值后面添加一个逗号,除了最后一个

这里有一个实现,做到这一点,并验证。 我希望这是你正在寻找的, 或基于此你将能够弄清楚。

String malformed = "{\n" +

" ssid:\"test1\"\n" +

" psk:\"test154695\"\n" +

" key_mgmt:WPA-PSK\n" +

" sim_slot:\"-1\"\n" +

" imsi:\"none\"\n" +

" priority:1\n" +

"}";

String expected = "{\n" +

" \"ssid\": \"test1\",\n" +

" \"psk\": \"test154695\",\n" +

" \"key_mgmt\": \"WPA-PSK\",\n" +

" \"sim_slot\": \"-1\",\n" +

" \"imsi\": \"none\",\n" +

" \"priority\": 1\n" +

"}";

Pattern p = Pattern.compile("(\\w+):([^\\n]*)", Pattern.CASE_INSENSITIVE | Pattern.DOTALL);

Matcher m = p.matcher(malformed);

StringBuilder builder = new StringBuilder("{\n");

while (m.find()) {

String key = m.group(1);

String value = m.group(2);

if (key.equals("key_mgmt")) {

value = "\"" + value + "\"";

}

builder.append(String.format(" \"%s\": %s,\n", key, value));

}

builder.replace(builder.length() - 2, builder.length(), "\n}");

String corrected = builder.toString();

assert expected.equals(corrected);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值