接口-json处理(改变key的名称)

本文介绍了一种使用Java处理JSON数据的方法,包括从List转换为JSONArray,遍历并修改JSON对象的属性,如删除指定字段、重命名键名等。通过示例代码展示了如何操作JSON数据,适用于后端开发中对数据格式进行调整的需求。


                JSONArray jsonArray = JSONArray.fromObject(list); //list为查询出的数据

                JSONObject js;
                JSONArray jsonArray1=new JSONArray(); 
                for(int i=0;i<jsonArray.size();i++){
                    js=(JSONObject) jsonArray.get(i);
                    js.remove("pageRn");
                    //改变key的名称
                    if(js.has("gsdmIn")){                        
                        js.put("gsdm_in", js.get("gsdmIn"));
                        js.remove("gsdmIn");
                    }//结束
                    jsonArray1.add(js);
                }

当你需要将POJO(Plain Old Java Object,简单的Java对象)中的列表转换成JSON,并希望改变列表元素键的名称时,可以借助一些库如Jackson、Gson或者Fastjson等。这些库通常提供了一些定制序列化功能。 例如,在Jackson中,你可以创建一个自定义的`ObjectMapper`并实现`JsonSerializer`或者`JsonDeserializer`接口处理列表字段。在这个类中,你可以覆盖`serialize()`或`deserialize()`方法,对列表元素的键进行替换: ```java import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.core.JsonProcessingException; public class CustomListSerializer<T> extends JsonSerializer<List<T>> { private String newKey; public CustomListSerializer(String newKey) { this.newKey = newKey; } @Override public void serialize(List<T> list, JsonGenerator gen, SerializerProvider serializers) throws IOException { gen.writeStartArray(); for (T item : list) { gen.writeObject(item); } gen.writeEndArray(); // 如果你想用新的键替换数组,这里可以用 gen.writeFieldName(newKey); 替换gen.writeEndArray(); } } // 使用时 ObjectMapper mapper = new ObjectMapper(); mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); mapper.setSerializerProvider(new JsonSerializerProvider() { @Override public JsonSerializer<Object> findValueSerializer(Object value) { if (value instanceof List) { return new CustomListSerializer<>("yourNewKey"); } return super.findValueSerializer(value); } }); String json = mapper.writeValueAsString(yourPojo); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值