大佬救命,怎么用取出这种格式的数据?
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));
}
回答:
- 感觉这个不是数据传输用的格式,更像是某种toString
- 数据传输还是用正经的数据传输格式为好
- 正则扣就完事了,反正遇到特殊字符都取不了
以上是 大佬救命,怎么用取出这种格式的数据? 的全部内容, 来源链接: utcz.com/p/938399.html