JAVA Json字符串解析替换

一,JAVA中的 \r\n 替换

如果Eclipse控制台输出   Hello\r\nWorld

那么实际上该字符串内容为  Hello\\r\\nWorld

为什么 \r\n 没有换行而是直接输出来了?

原因是该字符串的实际内容是 Hello\\r\\nWorld  而不是Hello\r\nWorld

换句话说,

System.out.println("Hello\r\nWorld");//world在下一行输出
System.out.println("Hello\\r\\nWorld");//world不会在下一行输出

那么当得到  Hello\\r\\nWorld  这样的字符串时,若要使 Hello 与 World 在不同行输出,即替换掉 \\r\\n

可以使用如下办法

String result = str.replace("\\r\\n", System.getProperty("line.separator"));
String result2 = str.replaceAll("\\\\r\\\\n", System.getProperty("line.separator"));
JAVA中String类的replace()方法不会使用正则表达式替换,而 replaceAll()方法使用正则表达式替换,因此:

对于正则表达式而言,要替换 \\r\\n  ,需要将特殊字符 \ 进行 转义。由于 \\r  中有两个特殊字符  \   故需要转义两次,同理 \\n


replace()方法并不使用正则表达式,因此是直接替换 \\r\\n 为行分隔符。

System.getProperty("line.separator"); 表示 获得当前系统中的行分隔符。


参考资料:

http://my.oschina.net/u/816576/blog/369643


二,json格式的字符串解析

1,解析Json格式的字符串有许多可供使用的 lib包。如org.json 和 josn-lib ,还有Google的gson。下面使用 json-lib。

json-lib 包需要以下的依赖包:(json-lib官网参考)

  • jakarta commons-lang 2.5
  • jakarta commons-beanutils 1.8.0
  • jakarta commons-collections 3.2.1
  • jakarta commons-logging 1.1.1
  • ezmorph 1.0.6
假设json字符串jsonString 形如下面key-value的格式:(举例说明)

{"aaa": "value1", "bbb":"value2","ccc":["key" : "value3", "key" : "value4", "key" : "value5"],"ddd":"value6"}

可以采用如下解析方法:

JSONObject jsonObj = JSONObject.fromObject(jsonString);//将jsonString 字符串转换成JSON对象
现在可以根据key来获得相应的value 。比如,获取字符串value1的值如下

String val= jsonObj.getString("aaa");//get key=aaa 's value
System.out.println(val);//print value1

注意到 key=ccc 对应的是一个数组形式的值,对JSON而言,数组形式的值用 JSONArray 对象来表示,故可按下面方式解析:

JSONArray jsarray = JSONArray.fromObject("ccc");
然后,调用 JSONArray中的方法遍历数组中的每个值。

for(int index = 0; index < jsarray.size(); index++){
    String value= jsarray.getJSONObject(index).getString("key");
    System.out.println(value);
 }
上面会打印出

value3

value4

value5

也就是说,对于JSON而言,大花括号{ } ,表示一个JSONObject对象。中括号 [ ] 表示 JSONArray对象。



    




  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值