JAVA解析Json字符串 菜鸟记录

  没用过Json,今天调用API返还数据是Unicode码,才反应过来API返还的Json数据,一路百度,奈何技术太差搞半天才搞明白,到底应该怎么解析Json
  自己记录一下,应该怎么操作
首先推荐使用JSON在线解析及格式化验证 - JSON.cnJSON 在线解析 | 菜鸟工具来查看我们要解析的Json数据

首先我们先解析一个简单的Json文本:{"from":"zh","to":"en","trans_result":[{"src":"CHINA","dst":"中国"}]}
当Json为字符串样式时我们很难看明白它是啥
当我们把他们打开

{
    "from":"zh",
    "to":"en",
    "trans_result":[
        {
            "src":"CHINA",
            "dst":"中国"
        }
    ]
} 

使用解析工具在线解析后更加直观 还显示了那些为Object 那些为Array
JSON在线解析及格式化验证 - JSON.cnJSON 在线解析 | 菜鸟工具  通过上面的解析我们知道了那些是Object那些是Array后,用Json解析库也就更加简单了
  这里我用的是Fistjson

fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。

  1. 先下载Fistjson的jar包 Fastjson 中文 Wiki
  2. 再将jar包复制到需要使用json的工程中
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class Main {
    public static void main(String[] args) {
    	//要解析的字符串 \u 是Unicode码  
    	//这里很多 \ 是为了转义 "
        String strJson = " {\"from\":\"en\",\"to\":\"zh\",\"trans_result\":[{\"src\":\"CHINA\",\"dst\":\"\u4e2d\u56fd\"}]}";
        System.out.println(str);
        //将Json字符串转换为json对象
        JSONObject jsObjectmain = JSON.parseObject(strJson);
        //在json对象中我们可以通过KEY获取value值
        System.out.println(jsObjectmain.getString("from"));
        
        //因为trans_result的value值是一个array类型(它下面的value值不唯一);
        //所以用JSONArray 来储存 trans_result的value值;
        //通过上面在线解析的图也可以看出那些是object那些是array
        JSONArray jsonArray = jsObjectmain.getJSONArray("trans_result");
        //通过JSONArray 获取它下面的 JSONObject 和数组一样index值从0开始
        JSONObject jsobject = jsonArray.getJSONObject(0);
        //和最开始一样通过key 获取 value
        System.out.println(jsobject.getString("src"));

		//经过解析发现Unicode码也成功还原
    }
}
发布了10 篇原创文章 · 获赞 0 · 访问量 186

猜你喜欢

转载自blog.csdn.net/qq_45126968/article/details/104420599
今日推荐