JSON 互相转化

一. JSON

1.JSON 介绍

JSON 是一种纯字符串形式的数据,它本身不提供任何方法(函数),非常适合在网络中进行传输。JavaScript、PHP、Java、Python、C++ 等编程语言中都内置了处理 JSON 数据的方法。

JSON 是基于 JavaScript的一个子集,是一种开放的、轻量级的数据交换格式,采用独立于编程语言的文本格式来存储和表示数据,易于程序员阅读与编写,同时也易于计算机解析和生成,通常用于在 Web 客户端(浏览器)与 Web 服务器端之间传递数据。

在 JSON 中,使用以下两种方式来表示数据:

Object(对象):键/值对(名称/值)的集合,使用花括号 { } 定义。在每个键/值对中,以键开头,后跟一个冒号:,最后是值。多个键/值对之间使用逗号, 分隔,例如{“name”:“C语言中文网”,“url”:“http://c.biancheng.net”};
Array(数组):值的有序集合,使用方括号 [ ] 定义,数组中每个值之间使用逗号, 进行分隔。

2. 导入依赖

 <dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20211205</version>
 </dependency>

3. JSON转对象

Student o = JSONObject.parseObject(jsonString, Student.class);

4. 对象或者List集合转化为JSON

        List<Student> studentList = new ArrayList<>();
        Student deme1 = new Student();
        deme1.setDiscipline("022000000000");
        deme1.setLongitude(120.680175);
        deme1.setLatitude(31.315544);
        studentList.add(deme1);
        String s2 = JSON.toJSONString(deme1);//对象转化为json
        Student deme2 = new Student();
        deme2.setDiscipline("022000000000");
        deme2.setLongitude(120.613318);
        deme2.setLatitude(31.381417);
        studentList.add(deme2);
        String s = JSON.toJSONString(studentList);//List转换为json

二. JSONObject

1. JSONObject 介绍

JSONObject只是一种数据结构,可以理解为JSON格式的数据结构(key-value 结构),可以使用put方法给json对象添加元素。JSONObject可以很方便的转换成字符串,也可以很方便的把其他对象转换成JSONObject对象。

2.通过原生生成json数据格式

JSONObject zhangsan = new JSONObject();
        try {
            //添加
            zhangsan.put("name", "张三");
            zhangsan.put("age", 18.4);
            zhangsan.put("birthday", "1900-20-03");
            zhangsan.put("majar", new String[] {"哈哈","嘿嘿"});
            zhangsan.put("null", null);
            zhangsan.put("house", false);
            System.out.println(zhangsan.toString());
        } catch (JSONException e) {
            e.printStackTrace();
        }

3.通过hashMap数据结构生成

     HashMap<String, Object> zhangsan = new HashMap<>();
        
        zhangsan.put("name", "张三");
        zhangsan.put("age", 18.4);
        zhangsan.put("birthday", "1900-20-03");
        zhangsan.put("majar", new String[] {"哈哈","嘿嘿"});
        zhangsan.put("null", null);
        zhangsan.put("house", false);
        System.out.println(new JSONObject(zhangsan).toString());

4.通过实体生成 

        Student student = new Student();
        student.setId(1);
        student.setAge("20");
        student.setName("张三");
        //生成json格式
        System.out.println(JSON.toJSON(student));
        //对象转成string
        String stuString = JSONObject.toJSONString(student);

5.JSON字符串转换成JSON对象

String studentString = "{\"id\":1,\"age\":2,\"name\":\"zhang\"}";
 
//JSON字符串转换成JSON对象
JSONObject jsonObject1 = JSONObject.parseObject(stuString);
 
System.out.println(jsonObject1);

6. list对象转listJson

ArrayList<Student> studentLsit = new ArrayList<>();
        Student student1 = new Student();
        student1.setId(1);
        student1.setAge("20");
        student1.setName("asdasdasd");
 
        studentLsit.add(student1);
 
        Student student2 = new Student();
        student2.setId(2);
        student2.setAge("20");
        student2.setName("aaaa:;aaa");
 
        studentLsit.add(student2);
 
        //list转json字符串
        String string = JSON.toJSON(studentLsit).toString();
        System.out.println(string);
 
        //json字符串转listJson格式
        JSONArray jsonArray = JSONObject.parseArray(string);
 
        System.out.println(jsonArray);
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ResultSet与json相互化可以利用Java提供的工具类和库来实现。 1. 将ResultSet换为Json 可以使用Jackson库将ResultSet换为Json格式。首先需要将ResultSet中的数据换为List<Map<String, Object>>,然后使用ObjectMapper类将List换为Json格式字符串。 示例代码: ```java public static String resultSetToJson(ResultSet rs) throws SQLException, JsonProcessingException { List<Map<String, Object>> rows = new ArrayList<>(); ResultSetMetaData metaData = rs.getMetaData(); int columnCount = metaData.getColumnCount(); while (rs.next()) { Map<String, Object> columns = new HashMap<>(); for (int i = 1; i <= columnCount; i++) { columns.put(metaData.getColumnName(i), rs.getObject(i)); } rows.add(columns); } ObjectMapper objectMapper = new ObjectMapper(); return objectMapper.writeValueAsString(rows); } ``` 2. 将Json换为ResultSet 同样使用Jackson库,可以将Json格式的字符串换为ResultSet。首先需要将Json格式字符串换为List<Map<String, Object>>,然后逐一将Map中的数据插入到ResultSet中。 示例代码: ```java public static ResultSet jsonToResultSet(String json, Connection connection) throws SQLException, IOException { ObjectMapper objectMapper = new ObjectMapper(); List<Map<String, Object>> rows = objectMapper.readValue(json, new TypeReference<List<Map<String, Object>>>() {}); ResultSetMetaData metaData = getMetaData(rows.get(0), connection); ResultSet resultSet = new ResultSetImpl(metaData); for (Map<String, Object> row : rows) { resultSet.moveToInsertRow(); for (String key : row.keySet()) { resultSet.updateObject(key, row.get(key)); } resultSet.insertRow(); } resultSet.beforeFirst(); return resultSet; } private static ResultSetMetaData getMetaData(Map<String, Object> row, Connection connection) throws SQLException { ResultSetMetaDataImpl metaData = new ResultSetMetaDataImpl(connection); for (String key : row.keySet()) { metaData.addColumn(key); } return metaData; } ``` 需要注意的是,这里使用了ResultSetMetaDataImpl类来构造ResultSetMetaData对象,该类是自定义的实现类,需要实现ResultSetMetaData接口中的所有方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值