解析前端传来的json字符串

1.什么是json

JSON是Javascript-Object-notation的简称,是一种轻量级的数据交换格式。

2.简单json的解析

@Test
public void test1() {
    String jsonString = "{\"name\":\"zhangsan\",\"password\":\"zhangsan123\",\"email\":\"10371443@qq.com\"}";
    JSONObject json = JSONObject.parseObject(jsonString);
    User user = new User();
    user.setName(json.getString("name"));
    user.setPassword(json.getString("password"));
    user.setEmail(json.getString("email"));
    System.out.println(user.toString());
}
@Data
class User {
    private String name;
    private String password;
    private String email;
}

将键值对的json字符串转换为json对象,然后获取json对象中的数据即可

3.企业返回对象的json解析

    @Test
    public void test2() {
        // 假设这就是返回的json格式的字符串
        String jsonString = "{\n" +
                "    \"code\": \"10000\",\n" +
                "    \"charge\": false,\n" +
                "    \"remain\": 1305,\n" +
                "    \"msg\": \"查询成功\",\n" +
                "    \"result\": {\n" +
                "        \"error_code\": 0,\n" +
                "        \"reason\": \"成功\",\n" +
                "        \"result\": {\n" +
                "            \"realname\": \"乐天磊\",\n" +
                "            \"idcard\": \"350721197702134399\",\n" +
                "            \"isok\": true\n" +
                "        }\n" +
                "    }\n" +
                "}";

        //使用fastjson解析json格式的字符串为json对象
        JSONObject jsonObject = JSONObject.parseObject(jsonString);

        //获取通信标识code
        String code = jsonObject.getString("code");

        //判断通信是否成功
//        if (!StringUtils.equals("10000", code)) {
//            return StandardResult.faild("通信异常");
//        }
        //获得业务处理结果,result中存储的也是json字符串
        Boolean isok =         jsonObject.getJSONObject("result").getJSONObject("result").getBoolean("isok");
        System.out.println("isok = " + isok);
        String idcard =         jsonObject.getJSONObject("result").getJSONObject("result").getString("idcard");
        System.out.println("idcard = " + idcard);
        String realname =         jsonObject.getJSONObject("result").getJSONObject("result").getString("realname");
        System.out.println("realname = " + realname);

//        if (!isok) {
//            return Result.error("真实姓名和身份证号码不匹配");
//        }

    } 

将前端返回的企业返回对象转化为可用的数据

4.嵌套对象的json类型转化

@Test
public void test3() {
    String str="{\n" +
            "\t\"name\": \"zhangsan\",\n" +
            "\t\"age\": \"18\",\n" +
            "\t\"score\": [{\n" +
            "\t\t\t\"year\": \"2016\",\n" +
            "\t\t\t\"yuwen\": \"60\",\n" +
            "\t\t\t\"shuxue\": \"60\",\n" +
            "\t\t\t\"yingyu\": \"60\"\n" +
            "\t\t},\n" +
            "\t\t{\n" +
            "\t\t\t\"year\": \"2017\",\n" +
            "\t\t\t\"yuwen\": \"80\",\n" +
            "\t\t\t\"shuxue\": \"80\",\n" +
            "\t\t\t\"yingyu\": \"80\"\n" +
            "\t\t},\n" +
            "\t\t{\n" +
            "\t\t\t\"year\": \"2018\",\n" +
            "\t\t\t\"yuwen\": \"100\",\n" +
            "\t\t\t\"shuxue\": \"100\",\n" +
            "\t\t\t\"yingyu\": \"100\"\n" +
            "\t\t}\n" +
            "\t]\n" +
            "}";
    JsonRootBean jsonRootBean = JSONObject.parseObject(str, JsonRootBean.class);
    System.out.println("jsonRootBean = " + jsonRootBean);
}
@Data
@ToString
public static class JsonRootBean {

    private String name;
    private String age;
    private List<Score> score;
    @Data
    @ToString
    public static class Score {

        private String year;
        private String yuwen;
        private String shuxue;
        private String yingyu;
    }
}

嵌套多个对象的json字符串转化为相应的对象

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨会停rain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值