大佬救命,怎么用取出这种格式的数据?

大佬救命,怎么用取出这种格式的数据?

EMMetadata{data={mail=123456@qq.com, phone=123456, avatarurl=http://123456, nickname=王者荣耀}}

希望可以java或者其他语言,换成为Map或者json。例如:

{"data":{"mail":"123456@qq.com", "phone":"123456", "avatarurl":"http://123456", "nickname":"王者荣耀"}

我思考了很长时间都没有结果,正则表达式似乎很难适应

这是Dart的代码参考,这种正则表达式很难匹配到所有数据

  static Map JsonConvertUser(String text) {

String string = text.replaceAll("EMMetadata{data=", '').replaceAll("=", ':');

string = string.substring(0, string.length - 1);

final string2 = string.replaceAll("\"", "");

final quotedString =

string2.replaceAllMapped(RegExp(r'\b\w+\b|[\u4e00-\u9fa5]+'), (match) {

return '"${match.group(0)}"';

});

final decoded = json.decode(quotedString);

return decoded;

}


回答:

来一个最笨的方法

    @Test

void testDate1() {

Map<String, Object> data = new HashMap<>();

Map<String, Object> map = new HashMap<>();

String str = "EMMetadata{data={mail=123456@qq.com, phone=123456, avatarurl=http://123456, nickname=王者荣耀}}";

String str1 = str.replaceFirst("EMMetadata\\{data=\\{", "").replaceFirst("}}", "");

String [] str2 = str1.split(",");

for (String str3 : str2) {

String [] str4 = str3.split("=");

String key = str4[0];

String val = str4[1];

map.put(key, val);

}

data.put("data", map);

System.out.println(JSON.get(data));

}


回答:

  1. 感觉这个不是数据传输用的格式,更像是某种toString
  2. 数据传输还是用正经的数据传输格式为好
  3. 正则扣就完事了,反正遇到特殊字符都取不了

以上是 大佬救命,怎么用取出这种格式的数据? 的全部内容, 来源链接: utcz.com/p/938399.html

回到顶部