Json格式及相关类库运用

JSON(JavaScript Object Notation)

  • 【概念】一种轻量级的数据交换格式
  • 【结构】
    • “名称/值”对的集合(A collection of name/value pairs)。在Java中,可理解为HashMap。示例:var json = { "name":"Jack", "age":23, "Marry":true };
    • 值的有序列表(An ordered list of values)。在大部分语言中,被理解为数组(Array 或 List)。示例:var json = [ "Jack" , "Rose" , "Tom" , 89 , true , false ];

Json-lib

  • 【概念】一个Java类库(官网
  • 【功能】
    • 转换Javabeans, maps, collection, java arrays 和 XML 成为 json 格式数据
    • 转换 json 格式数据成为 javabeans 对象
  • 【所需 jar 包】
    • commons-beanutils-1.8.3.jarJackson
    • commons-collections-3.2.1.jar
    • commons-lang-2.6.jar
    • commons-logging-1.1.1.jar
    • ezmorph-1.0.6.jar
    • json-lib-2.4-jdk15.jar

Jackson

  • 【概念】处理JSON格式数据的类库
  • 【特点】
    • 相比json-lib所需的jar包少
    • 简单易用
    • 性能较好
  • 【所需 jar 包】
    • jackson-annotations-2.1.1.jar
    • jackson-core-2.1.1.jar
    • jackson-databind-2.1.1.jar

GSON

  • 【概念】Google研发
  • 【特点】
    • 无依赖
    • 不需要额外 jar 包
  • 【tips】
  • 【使用】
// bean 转换 json
Gson gson = new Gson();
String json = gson.toJson(object);

// json 转换 bean
Gson gson = new Gson();
String json = "{\"id\":\"2\",\"name\":\"Json技术\"}";
Book book = gson.fromJson(json,Book.class);

// json 转换复杂的 bean
Gson gson = new Gson();
String json = "[{\"id\":\"1\",\"name\":\"Json技术\"},{\"id\":\"2\",\"name\":\"java技术\"}]";
// 转换成 List
List list = gson.fromJson(json, new TypeToken<LIST>() {}.getType());
// 转换成Set
Set set = gson.fromJson(json, new TypeToken<SET>() {}.getType());

// 判断字符串是否是 json
boolean jsonFlag;
try {
new JsonParser().parse(string).getAsJsonObject();
jsonFlag = true;
} catch(Exception e) {
jsonFlag = false;
}

// 从 json 中获取属性
String propertyName = "id";
String propertyValue = "";
try {
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
propertyValue = jsonObj.get(propertyName).toString();
} catch (Exception e) {
propertyValue = null;
}

// 从 json 中除去某个属性
String propertyName = 'id';
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
jsonObj.remove(propertyName);
json = jsonObj.toString();

// 向 json 中添加属性
String propertyName = "age";
Object propertyValue = 12;
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
jsonObj.addProperty(propertyName, new Gson().toJson(propertyValue));
String json = jsonObj.toString();

// 修改 json 中的属性
// 先remove
// 后add

// 判断 json 中是否含有属性
boolean isContains = jsonObj.has(propertyName);

// json 中日期格式处理
GsonBuilder builder = new GsonBuilder();
builder.setDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Gson gson = builder.create();

FastJson

  • 【概念】阿里开发
  • 【特点】
    • 无依赖
    • 高性能
  • 【劣势】在复杂类型的Bean转换Json上需要制定引用
  • 【tips】
  • 【使用】
// bean 转换成 json
// 格式化 json
JSON.toJSONString(object, true);
// 非格式化 json
JSON.toJSONString(object, false);

// json 转换成 bean
Book book = JSON.parseObject(json, Book.class);

// json 转换成复杂的 bean
// List
List list = JSON.parseObject(json, new TypeReference<ARRAYLIST>() {});
// Set
Set set = JSON.parseObject(json, new TypeReference<HASHSET>() {});

// 从 json 中获取属性
JSONObject obj = JSON.parseObject(json);
String propertyValue = obj.get(propertyName);

// 除去 json 中某个属性
JSONObject obj = JSON.parseObject(json);
Set set = obj.keySet();
String propertyValue = set.remove(propertyName);
String json = obj.toString();

// 向 json 中添加属性
JSONObject obj = JSON.parseObject(json);
obj.put(propertyName, JSON.toJSONString(propertyValue));
String json = obj.toString();

// 修改 json 中的属性
JSONObject obj = JSON.parseObject(json);
Set set = obj.keySet();
if(set.contains(propertyName)) {
obj.put(propertyName, JSON.toJSONString(propertyValue));
}
String json = obj.toString();

// 判断 json 中是否包含属性
boolean isContain = set.contains(propertyName);

// json 日期格式处理
Object obj = new Date();
String json = JSON.toJSONStringWithDateFormat(obj, "yyyy-MM-dd HH:mm:ss.SSS");


根据多篇博客整合并总结,如有侵权请联系更正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Java中,可以使用Apache POI来将JSON转换为Excel文件。 Apache POI是一个流行的Java类库,通常用于创建、读取和修改Microsoft Office文件,包括Excel文件。 要将JSON转换为Excel,首先需要解析JSON数据并将其转换为Java对象。可以使用第三方,如JacksonGson,来帮助解析JSON。这些提供了将JSON字符串转换为Java对象的方法。 一旦将JSON数据转换为Java对象,就可以使用Apache POI来创建Excel文件。POI提供了一系列类和方法,可以创建Excel工作簿、工作表以及单元格,并设置单元格的值和格式。 以下是一个简单的示例代码,演示如何将JSON转换为Excel使用Apache POI: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.util.List; public class JsonToExcelConverter { public static void convertToExcel(List<MyObject> objects, String outputFilePath) { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); int rowNum = 0; for (MyObject obj : objects) { Row row = sheet.createRow(rowNum++); Cell cell1 = row.createCell(0); cell1.setCellValue(obj.getField1()); Cell cell2 = row.createCell(1); cell2.setCellValue(obj.getField2()); // 添加更多的单元格和字段 } try (FileOutputStream outputStream = new FileOutputStream(outputFilePath)) { workbook.write(outputStream); workbook.close(); System.out.println("Excel文件成功创建!"); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { // 解析JSON并得到Java对象列表 List<MyObject> objects = parseJson("data.json"); // 将Java对象列表转换为Excel文件 convertToExcel(objects, "output.xlsx"); } } class MyObject { private String field1; private int field2; // 省略构造函数和getter/setter方法 } ``` 以上示例代码使用了XSSF工作簿和Sheet类来创建Excel文件,并使用Row和Cell类来设置单元格的值。通过调用Workbook的write()方法,可以将Excel文件写入磁盘。 请注意,此示例代码假设已经解析了名为"data.json"的JSON文件,并将其转换为MyObject对象的列表。您需要根据自己的数据结构和要求进行修改。 ### 回答2: 在Java中,有许多类库可以帮助我们将JSON数据转换为Excel文件。以下是其中几个比较常用的类库: 1. Apache POI:Apache POI是一款非常流行的Java类库,可以用来创建和处理Microsoft Office格式的文件,包括Excel。我们可以使用POI的HSSF和XSSF组件来将JSON数据转换为Excel文件。首先,我们需要解析JSON数据并将其转换为Java对象,然后使用POI提供的API将数据写入Excel文件。 2. GsonGson是Google提供的一款功能强大的JSON解析。虽然Gson本身不提供直接将JSON转换为Excel的功能,但我们可以使用它将JSON数据解析为Java对象,然后使用Apache POI等其他类库将Java对象转换为Excel文件。 3. JacksonJackson是另一款流行的JSON解析,也可以用来处理将JSON转换为Excel。类似于Gson,我们可以使用JacksonJSON数据解析为Java对象,然后使用其他类库将Java对象转换为Excel文件。 总结来说,我们可以使用Apache POI、GsonJackson类库JSON数据转换为Excel文件。具体的实现细节可以根据具体的需求和项目来选择合适的类库和方法。 ### 回答3: JSON转Excel是一种将JSON数据转换为Excel文件格式的操作。在Java中,有多个类库可以实现这个功能。 其中最常用的类库是Apache POI(Poor Obfuscation Implementation)和EasyExcel。 Apache POI是一个用于操作各种Office文件格式的Java API。它提供了一套丰富的类和方法,可以创建、修改和读取Excel文件。要将JSON数据转换为Excel,可以使用POI的相关类库,如Workbook、Sheet和Row等,将JSON中的数据逐行逐列地写入Excel文件中。 另外,EasyExcel是一款基于POI封装的简单易用的Java类库,它提供了更加简洁和便捷的API,能够快速地实现JSON到Excel的转换。EasyExcel提供了注解形式的编程方式,可以方便地将JSON中的属性与Excel中的列进行映射,并且支持多种导入导出格式,如XLS、XLSX、CSV等。 使用以上两种类库进行JSON转Excel的步骤大致相同,包括读取JSON数据、创建Excel文件、处理数据映射和写入Excel文件等。 需要注意的是,由于Excel文件的特殊格式,对于大量数据的处理可能会比较耗时和占用内存。因此,在处理大规模的JSON数据转换时,应该注意性能和资源消耗的问题。另外,在选择类库时,也需要考虑项目的需求和实际情况,选择适合的类库来实现JSON转Excel功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值