Jackson各类操作使用大全,使用jackson解析微信的模板信息

文章介绍了如何使用Jackson库在Java中进行JSON字符串与对象之间的转换,包括将Java对象转化为JSON字符串,将JSON字符串转化为JsonNode,以及JsonNode的操作,如读取字段和向Json对象中添加元素。还强调了在添加元素时要注意避免相同的键导致覆盖的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近发现使用jackson解析微信各种返回的json值特别的不爽,网上资料也很少乱七八糟的,很零碎,然后我就自己整理了下。

一是:为了方便需要的小伙伴吧,二是:觉得可以记录下自己以后也方便看。

喜欢的就点个赞!很久发文章了,点赞多了我才有动力更新更多文章。

1.如何将集合,对象等转为一个json字符串?

@Data
public class Demo {
    private String title;
    private String desc;
}


package com.kerryprops.kip.service.message.util;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.util.ArrayList;
import java.util.List;

public class MichelleTest {
    public static void main(String[] args) throws JsonProcessingException {

Demo demo = new Demo();
demo.setTitle("TEST");
demo.setDesc("sec");
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(demo);//无论是集合还是对象都可以转
System.out.println(jsonString);
//结果:{"title":"TEST","desc":"sec"}

}

2.如何将json字符串转为jsonnode

JsonNode jsonNode = objectMapper.readTree(jsonString);

System.out.println(jsonNode);

3.JsonNode的操作

###json字符串转对象

Demo demo1 = objectMapper.readValue(jsonString, Demo.class);


###json数组字符串转数组对象

TypeReference<List<Demo>> typeReference = new TypeReference<List<Demo>>() {

};

String jsonStr = "[{\"title\":\"TEST\",\"desc\":\"sec\"},{\"title\":\"TEST1\",\"desc\":\"sec1\"}]";

List<Demo> listResult = objectMapper.readValue(jsonStr, typeReference);

list.forEach(demoTemp -> {

    System.out.println(demoTemp.getTitle());

});

####读取json中得某个字段-读取单个字段

String dataString = "{\"title\":\"TEST\",\"desc\":\"sec\"}";

// 读取 json 字符串为 JsonNode 对象
JsonNode data = objectMapper.readTree(dataString);

// 读取单个字段
String title =  data.at("/title").asText();
System.out.println(title);

4.如何往json对象中加元素? objectNode的操作(!!!踩坑:一定记得放入额元素的key最好不要相同否则会被覆盖!!!!)

###对json中添加元素,只能使用objectnode,先构建一个objctnode
ObjectNode parentNode = objectMapper.createObjectNode();

//put可以放入一个string类型的元素,放入node元素请使用set(),put已经被淘汰掉了
parentNode.put("title","michelle");

parentNode.set("title",jsonNode);

###踩坑看这儿!!!

ObjectNode parentNode = objectMapper.createObjectNode();

//put可以放入一个string类型的元素,放入node元素请使用set(),put已经被淘汰掉了

parentNode.put("title","michelle");
parentNode.put("title","michelle1");
parentNode.put("title","michelle2");
System.out.println(parentNode);

//只会打印最后put的值前面的都会被覆盖
//结果:{"title":"michelle2"}

5.ArrayNode的操作?

#新建一个json的数组
ArrayNode arrayNode = JsonNodeFactory.instance.arrayNode();

//放入元素
arrayNode.add(jsonNode);

### Java 微信集成 DeepSeek 使用教程 #### 准备工作 为了在 Java 项目中接入微信使用 DeepSeek,需完成如下准备工作: - 注册微信公众平台账号,并获取 AppID 和 AppSecret。 - 配置服务器地址(URL)和 Token,确保能够接收来自微信的消息推送。 #### 引入依赖库 在 Maven `pom.xml` 文件中引入必要的依赖项来处理 HTTP 请求以及 JSON 解析等功能[^4]。 ```xml <dependencies> <!-- Http Client --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency> <!-- Json Processor --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.10.3</version> </dependency> <!-- Other dependencies as needed... --> </dependencies> ``` #### 获取 Access Token 根据官方文档说明,每次发送消息给用户前都需要先获得 access_token。可以通过 GET 方式请求接口 `/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET` 来得到 token 值。 ```java public class WeChatUtil { private static final String APP_ID = "your_app_id"; private static final String SECRET = "your_secret"; public static JSONObject getAccessToken() throws Exception{ URL url = new URL("https://api.weixin.qq.com/cgi-bin/token"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); StringBuilder paramBuilder = new StringBuilder("?grant_type=client_credential") .append("&appid=").append(APP_ID) .append("&secret=").append(SECRET); conn.setRequestMethod("GET"); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); StringBuffer resultBuffer = new StringBuffer(); String line; while ((line = reader.readLine()) != null){ resultBuffer.append(line); } return new JSONObject(resultBuffer.toString()); } } ``` #### 发送模板消息 利用上述方法取得的有效期内的 access_token 可以用来构建 POST 请求向指定 OpenID 用户发送自定义模板消息。这里假设已经准备好了一个包含必要参数的对象 modelMap[]^4]。 ```java public void sendTemplateMessage(String openId, Map<String,Object> modelMap)throws Exception{ // 构造POST body内容... ObjectMapper mapper = new ObjectMapper(); String jsonBody = mapper.writeValueAsString(modelMap); URL url = new URL("https://api.weixin.qq.com/cgi-bin/message/template/send?"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); OutputStream os = conn.getOutputStream(); os.write(("access_token=" + accessToken).getBytes()); os.write(jsonBody.getBytes()); int responseCode = conn.getResponseCode(); System.out.println("\nSending 'POST' request to URL : " + url); System.out.println("Response Code : " + responseCode); BufferedReader in = new BufferedReader( new InputStreamReader(conn.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); // 打印结果 System.out.println(response.toString()); } ``` 以上展示了如何在一个简单的 Java 应用程序里集成了微信 API 并调用了 DeepSeek 的部分功能。实际应用场景可能更加复杂,涉及到更多的业务逻辑和技术细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值