后台生成一个json规则对象,想用解析字符串的方式来解析成pojo再放到list中,找了一些资料,认为写正则是性价比最好的.
[{"itemName":"No.","printX":"5","printY":"4.9","printW":"6.5","printH":"0.4","printFont":"宋体","printMode":"0","printEnable":"T","printKey":"Polic","value":"20"},{"itemName":"CONTRACT NO","printX":"15.2","printY":"5.3","printW":"15","printH":"0.4","printFont":"宋体","printMode":"0","printEnable":"T","printKey":"Contrac","value":"14"}]
希望大家给些建议,
[{"itemName":"No.","printX":"5","printY":"4.9","printW":"6.5","printH":"0.4","printFont":"宋体","printMode":"0","printEnable":"T","printKey":"Polic","value":"20"},{"itemName":"CONTRACT NO","printX":"15.2","printY":"5.3","printW":"15","printH":"0.4","printFont":"宋体","printMode":"0","printEnable":"T","printKey":"Contrac","value":"14"}]
希望大家给些建议,
String josn= "[{\"itemName\":\"No.\",\"printX\":\"5\",\"printY\":\"4.9\",\"printW\":\"6.5\",\"printH\":\"0.4\",\"printFont\":\"宋体\",\"printMode\":\"0\",\"printEnable\":\"T\",\"printKey\":\"Polic\",\"value\":\"20\"},{\"itemName\":\"CONTRACT NO\",\"printX\":\"15.2\",\"printY\":\"5.3\",\"printW\":\"15\",\"printH\":\"0.4\",\"printFont\":\"宋体\",\"printMode\":\"0\",\"printEnable\":\"T\",\"printKey\":\"Contrac\",\"value\":\"14\"}]";
String[] array=josn.split("(?<=\\}),(?=\\{)");
List<Map<String,String>> list=new ArrayList<Map<String,String>>();
for(String str:array){
Pattern p = Pattern.compile("[\\{,]\"(\\w+)\"");
Matcher m = p.matcher(str);
List<String> key=new ArrayList<String>();
while (m.find()){
key.add(m.group(1)); }
System.out.println(key);
p=Pattern.compile(":\"([^\"]*)\",?");
m=p.matcher(str);
List<String> values=new ArrayList<String>();
while (m.find()){
values.add(m.group(1));
}
System.out.println(values);
if(key.size()==values.size()){
Map<String,String> map=new HashMap<String,String>();
for(int i=0;i<key.size();i++){
map.put(key.get(i), values.get(i));
}
list.add(map);
}
}
System.out.println(list);
}
key=[]
values=[]
key=[]
values=[]
key=[]
values=[]
我利用eclipse 传递参数进去
public static void main(String[] args) {
dealJson1(args[0]);
}