json与string/list相互转化

字符串:str
json格式的字符串: jsonStr
jsonArray格式的字符串: jsonArrayStr
json数组: jsonArray


一. json 与 String 的相互转换

(1) json格式的字符串 转 JSONArray
语法: JSONArray jsonArray = JSONArray.parseArray(jsonStr);

	String projects = "[\"java\",\"pyhton\",\"C++\"]";
    JSONArray  jsonArray = JSONArray.parseArray(projects);
    System.out.println(jsonArray);

	结果: ["java","pyhton","C++"]

二. json与List的相互转换

(1) List<String> 转 JSONArray

	List<String> strList = new ArrayList<>();
	strList.add("java");
	strList.add("python")
	JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(strList));
	System.out.println(jsonArray);

   	结果: ["java","pyhton"]

(2) List<Dto> 转 JSONArray
思路: 遍历List,将Dto转换成JSONObject — JSONArray.add(JSONObject )

	JSONArray jsonArray = new JSONArray();
    List<Dto> dtoList = new ArrayList<>();
    for (int i = 0; i< 5; i++){
        JSONObject obj= new JSONObject();
        Dto dto= new Dto();
        dto.setId("100"+i);
        dto.setTime("200"+i);
        obj.put("id",dto.getId());
        obj.put("time",dto.getTime());
        jsonArray.add(obj);
    }
    System.out.println(jsonArray);

(3) JSONArray 转 List<String> / List<Integer>
语法: List<String> list= JSONArray.parseArray(jsonStr, String.class);

	String projects = "[\"java\",\"pyhton\",\"C++\"]";
	List<String> list= JSONArray.parseArray(projects, String.class);
    System.out.println(list);

    结果: [java, pyhton, C++]

语法: List<Integer> list= JSONArray.parseArray(jsonStr, Integer.class);

    String counts = "[\"1\",\"2\",\"3\"]";
    List<Integer> integers = JSONArray.parseArray(counts, Integer.class);
    for (Integer i :integers ){
        System.out.print(i + " ");
    }
    System.out.println(integers);
    结果: 1 2 3
   		 [1, 2, 3]

(4) JSONArray 转 List<Dto>
语法: List dtolist= JSONArray.parseArray(jsonStr, Dto.class);

	String dtos= "[{\"id\":\"1001\",\"time\":\"2001\"},{\"id\":\"1002\",\"time\":\"2002\"}]";
    List<Dto> dtoList = JSONArray.parseArray(dtos, Dto.class);
    for(Dto dto :dtoList  ){
    	 System.out.println(Dto.getId() + "," + Dto.getTime());
    }

	结果:1001,2001
		1002,2002

(5)Dto 转 json格式
语法: JSONObject obj = JSONObject.toString(Dto);

JSONObject data = new JSONObject();
PackageDto packageDto = new PackageDto;
packageDto.setPackageId( "abc001");
packageDto.setPackageName("套餐A")
data.put("packageDto",JSONObject.toJSON(packageDto)); 

三. 判断json数组中是否存在字符串str

	if(JSONArray.contains(str)){
		Boolean flag = true;
	}else{
		Boolean flag = false;
	}
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过以下步骤实现 ResultSet 与 JSON 相互转化: 1. 将 ResultSet 转化List<Map<String, Object>> 对象。 2. 使用 Gson 将 List<Map<String, Object>> 对象转化JSON 格式的字符串。 3. 使用 Gson 将 JSON 格式的字符串转化List<Map<String, Object>> 对象。 4. 将 List<Map<String, Object>> 对象转化为 ResultSet 对象。 以下是 Java 代码示例: ```java import com.google.gson.Gson; import java.sql.*; import java.util.*; public class ResultSetToJson { public static void main(String[] args) throws SQLException { // 获取数据库连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false", "root", "password"); // 执行 SQL 查询语句 Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users"); // 将 ResultSet 转化List<Map<String, Object>> 对象 List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>(); ResultSetMetaData metaData = rs.getMetaData(); int columnCount = metaData.getColumnCount(); while (rs.next()) { Map<String, Object> map = new HashMap<String, Object>(); for (int i = 1; i <= columnCount; i++) { String columnName = metaData.getColumnLabel(i); Object value = rs.getObject(columnName); map.put(columnName, value); } resultList.add(map); } // 使用 Gson 将 List<Map<String, Object>> 对象转化JSON 格式的字符串 Gson gson = new Gson(); String json = gson.toJson(resultList); System.out.println(json); // 使用 Gson 将 JSON 格式的字符串转化List<Map<String, Object>> 对象 List<Map<String, Object>> resultList2 = gson.fromJson(json, List.class); // 将 List<Map<String, Object>> 对象转化为 ResultSet 对象 ResultSetMetaData metaData2 = rs.getMetaData(); ResultSet rs2 = new ResultSetImpl(resultList2, metaData2); while (rs2.next()) { System.out.println(rs2.getInt("id") + " " + rs2.getString("name")); } // 关闭 ResultSet、Statement 和 Connection 对象 rs.close(); stmt.close(); conn.close(); } } class ResultSetImpl implements ResultSet { private List<Map<String, Object>> resultList; private ResultSetMetaData metaData; private int rowIndex = -1; public ResultSetImpl(List<Map<String, Object>> resultList, ResultSetMetaData metaData) { this.resultList = resultList; this.metaData = metaData; } @Override public boolean next() throws SQLException { rowIndex++; return rowIndex < resultList.size(); } @Override public String getString(String columnLabel) throws SQLException { Object value = resultList.get(rowIndex).get(columnLabel); return value == null ? null : value.toString(); } // 实现 ResultSet 接口中的其他方法 } ``` 需要注意的是,由于 ResultSet 接口中的方法较多,以上代码仅实现了部分方法,具体实现可根据需求进行扩展。另外,由于 ResultSet 接口是只读的,因此在实现 ResultSet 接口时不能包含更新、插入或删除等方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值