curl --location --request POST 'https://yuanbao.tencent.com/api/chat/11cd6f36-2d22-3f75-1816-05c20026bf16'
--header 'accept: application/json'
--header 'accept-language: zh-CN,zh;q=0.9,zh-TW;q=0.8'
--header 'cache-control: no-cache'
--header 'chat_version: v1'
--header 'origin: https://yuanbao.tencent.com'
--header 'pragma: no-cache'
--header 'priority: u=1, i'
--header 'referer: https://yuanbao.tencent.com/chat/naQivTmsDa'
--header 'sec-ch-ua;'
--header 'sec-ch-ua-mobile: ?0'
--header 'sec-ch-ua-platform: "Windows"'
--header 'sec-fetch-dest: empty'
--header 'sec-fetch-mode: cors'
--header 'sec-fetch-site: same-origin'
--header 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36'
--header 'x-agentid: naQivTmsDa'
--header 'x-bus-params-md5: b01276892a9dbe9770f13c4ed199bfd0'
--header 'x-commit-tag: 7e00cf62'
--header 'x-device-id: 1940f16332f100dd16bf5cf2f0243c7b4cd03168cc'
--header 'x-hy106;'
--header 'x-hy92: c73f0ec716bf5cf2f0243c7b02000009b19614'
--header 'x-hy93: 1940f16332f100dd16bf5cf2f0243c7b4cd03168cc'
--header 'x-instance-id: 5'
--header 'x-language: zh-CN'
--header 'x-os_version: Windows(10)-Blink'
--header 'x-platform: win'
--header 'x-requested-with: XMLHttpRequest'
--header 'x-source: web'
--header 'x-timestamp: 1760846039292'
--header 'x-trid-channel: undefined'
--header 'x-uskey: DCAxFeb05pDmvvCtOP3B8IOqDrUH5%2F8iba2rGlUpGHRtKIb47nMQesTDg30q2WNwYweR85Vp52Fp%0AvrekG7RB%2FIP%2BDNNb4uYgab9lZpNECoDxdsNwhdUscTw%2F4xQ3sXJ1dJ7A%2BYrq41DwudOpN8OG8Vmi%0AWNdMyMOqNblmOpdVXKWqL3Vsl%2BLiHUqz4TY3sXJ1eSRR7YTi5qZ5%2B9tnYHHXnwtzBrIK5MP6aurg%0AOlxCWrFqbX%2BgwbA7OBMwkpFq002mcl7G8GJ061DmrvHwPejX7qWuArIG4r8iZ62rGlTHCNcwLXJt%0A2Mfpe16%2F4ICq2WN2eT7G5kw5yJDo2utIPYOqoBm%2FJ%2BKO4%2FF5fL%2F9NArCWdRzNsLxq%2Bxte2wl8xWt%0A03rmeAQJ7Prq4VFzrbO3PeEFkqCuWaaHzbXsML%2FqOBaSXoR3fjfslvfjdl2y8wiqsFTmdx7R9G%2Fq%0A4UDmubZbPOPZ%2Ft5vD%2FKQzYt0auwKPT2FTKWdKifx5v%2Fqbx2Q5xO0ujq%2BbJ4y8Y2qlJXkufmpPOZB%0A%2FJCtEfIF8Mjweo2mNSfLWdnlLsNhg%2FTtbqw84AY%2FsE2mewmR%2Bn%2Fr6qc7k%2Fe1OPPb4BE%2FJ%2BKN5NF5%0AfMv7ehavNoimZWfhmfTgcVw34Aiqs3qmdwsf5k%2Fr7Vguk%2Fe2PcPb8p0%2FCNIf9MH%2F'
--header 'x-webdriver: 0'
--header 'x-webversion: 2.42.1'
--header 'x-ybuitest: 0'
--header 'Cookie: _qimei_uuid42=1940f16332f100dd16bf5cf2f0243c7b4cd03168cc; _qimei_i_3=7cbc488a965351db94c3f8375cd677b5ffe7a5a3415d02d6b7de7b5877c7226e343266943989e2a1a3bc; _qimei_fingerprint=d93b3b700bc3f8fb1d11a344cd3638df; hy_source=web; _ga=GA1.2.276395648.1744738396; _qimei_h38=c73f0ec716bf5cf2f0243c7b02000009b19614; hy_user=XDRkptXdAb77riVo; _gcl_au=1.1.797187918.1755698236; qcloud_from=gwzcw.9736034.9736034.9736034-1760531652339; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%221963a832571736-097f672c2d3aed-26011c51-1049088-1963a83257374f%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E4%BB%98%E8%B4%B9%E5%B9%BF%E5%91%8A%E6%B5%81%E9%87%8F%22%2C%22%24latest_utm_medium%22%3A%22cpc%22%2C%22%24search_keyword_id%22%3A%22199e7dd1f2d18b0823464dad8bd58260619511049088199e7dd1f2e9df%22%2C%22%24search_keyword_id_type%22%3A%22baidu_sem_keyword_id%22%2C%22%24search_keyword_id_hash%22%3A8316794549290270%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTk2M2E4MzI1NzE3MzYtMDk3ZjY3MmMyZDNhZWQtMjYwMTFjNTEtMTA0OTA4OC0xOTYzYTgzMjU3Mzc0ZiJ9%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%22%2C%22value%22%3A%22%22%7D%2C%22%24device_id%22%3A%221963a832571736-097f672c2d3aed-26011c51-1049088-1963a83257374f%22%7D; qcstats_seo_keywords=%E4%BA%91%E4%BA%A7%E5%93%81-%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E4%B8%8E%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0-%E8%85%BE%E8%AE%AF%E4%BA%91%20TI%20%E5%B9%B3%E5%8F%B0; web_uid=ff410311-811b-43ed-8876-ba5f0596bef3; hy_token=8tE8bq6InCxff5mUqQZfc9aGHP6NPD80Cr/k258SiLJ0SRKVmpnUylkLLyDfCVTFQIe3vlNvGHX/9KEfmzuTlanNugr9/5BVCkaDX32r7lk62pppgNNABtQYsss2hRifxbe7w/eU6htaa1rBVEnlcGH2EVRYA2G9ycYj37fge+aXYc48oS2TLNpTGGIaY9XnuiVFqTYaY+5j6bV2ymKik7jWunFLIxj1wlcFOiR3NTs1xaBqMKcdysKHwkGSxNolju603cLFuPXjC5WRoLhs4szd+EC9TSFTNnEkO9rtFUwfOBq6WGdg3ButCsKQ70b4pLDoC62RLfUngW3Y97hxZdaO291KtZzw4THG+0wTtDGdLAasLW6N6Zg5E5sUBfEQbsNgMi4Cnzgduy55bzbhXt+L4pq/zX+NKWf3/92d9+6jA9ZTmWqtskhUUj9XYrWAIb0dzJXLf4U8dxqFP5FIHPJ5rJ0PkGImFv/g7L+oUjv7Wa0x6SsxUSWOstSY36BIcYNuMf0nDcuNR2qh870lV8nnhdjr0qbAm6SkiaqZm9GowHp2qC6tVAIYtW5jAhfq; _qimei_i_1=43ea7ed1925906db94c4f9315dd625e5a4b8a6a712590781e7887a582493206c61633ec73980e4ddd2abaedc'
--header 'content-type: application/json'
--header 'Host: yuanbao.tencent.com'
--header 'Connection: keep-alive'
--data-raw '{ "model": "gpt_175B_0404", "prompt": "你好", "plugin": "Adaptive", "displayPrompt": "你好", "displayPromptType": 1, "options": { "imageIntention": { "needIntentionModel": true, "backendUpdateFlag": 2, "intentionStatus": true } }, "multimedia": [], "agentId": "naQivTmsDa", "supportHint": 1, "extReportParams": null, "isAtomInput": false, "version": "v2", "chatModelId": "deep_seek_v3", "chatModelExtInfo": "{"modelId":"deep_seek_v3","subModelId":"","supportFunctions":{"internetSearch":"closeInternetSearch"}}", "applicationIdList": [], "supportFunctions": [ "closeInternetSearch" ] }' 这个curl请求返回text/event-stream,帮我改为java代码,用Java的HttpURLConnection实现
以下是将这个curl请求转换为Java代码的实现,使用HttpURLConnection来处理text/event-stream响应:
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
public class TencentYuanbaoChat {
public static void main(String[] args) {
String url = "https://yuanbao.tencent.com/api/chat/11cd6f36-2d22-3f75-1816-05c20026bf16";
String requestBody = "{\n" +
" \"model\": \"gpt_175B_0404\",\n" +
" \"prompt\": \"你好\",\n" +
" \"plugin\": \"Adaptive\",\n" +
" \"displayPrompt\": \"你好\",\n" +
" \"displayPromptType\": 1,\n" +
" \"options\": {\n" +
" \"imageIntention\": {\n" +
" \"needIntentionModel\": true,\n" +
" \"backendUpdateFlag\": 2,\n" +
" \"intentionStatus\": true\n" +
" }\n" +
" },\n" +
" \"multimedia\": [],\n" +
" \"agentId\": \"naQivTmsDa\",\n" +
" \"supportHint\": 1,\n" +
" \"extReportParams\": null,\n" +
" \"isAtomInput\": false,\n" +
" \"version\": \"v2\",\n" +
" \"chatModelId\": \"deep_seek_v3\",\n" +
" \"chatModelExtInfo\": \"{\\\"modelId\\\":\\\"deep_seek_v3\\\",\\\"subModelId\\\":\\\"\\\",\\\"supportFunctions\\\":{\\\"internetSearch\\\":\\\"closeInternetSearch\\\"}}\",\n" +
" \"applicationIdList\": [],\n" +
" \"supportFunctions\": [\n" +
" \"closeInternetSearch\"\n" +
" ]\n" +
"}";
Map<String, String> headers = new HashMap<>();
headers.put("accept", "application/json");
headers.put("accept-language", "zh-CN,zh;q=0.9,zh-TW;q=0.8");
headers.put("cache-control", "no-cache");
headers.put("chat_version", "v1");
headers.put("origin", "https://yuanbao.tencent.com");
headers.put("pragma", "no-cache");
headers.put("priority", "u=1, i");
headers.put("referer", "https://yuanbao.tencent.com/chat/naQivTmsDa");
headers.put("sec-ch-ua", "");
headers.put("sec-ch-ua-mobile", "?0");
headers.put("sec-ch-ua-platform", "\"Windows\"");
headers.put("sec-fetch-dest", "empty");
headers.put("sec-fetch-mode", "cors");
headers.put("sec-fetch-site", "same-origin");
headers.put("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36");
headers.put("x-agentid", "naQivTmsDa");
headers.put("x-bus-params-md5", "b01276892a9dbe9770f13c4ed199bfd0");
headers.put("x-commit-tag", "7e00cf62");
headers.put("x-device-id", "1940f16332f100dd16bf5cf2f0243c7b4cd03168cc");
headers.put("x-hy106", "");
headers.put("x-hy92", "c73f0ec716bf5cf2f0243c7b02000009b19614");
headers.put("x-hy93", "1940f16332f100dd16bf5cf2f0243c7b4cd03168cc");
headers.put("x-instance-id", "5");
headers.put("x-language", "zh-CN");
headers.put("x-os_version", "Windows(10)-Blink");
headers.put("x-platform", "win");
headers.put("x-requested-with", "XMLHttpRequest");
headers.put("x-source", "web");
headers.put("x-timestamp", "1760846039292");
headers.put("x-trid-channel", "undefined");
headers.put("x-uskey", "DCAxFeb05pDmvvCtOP3B8IOqDrUH5%2F8iba2rGlUpGHRtKIb47nMQesTDg30q2WNwYweR85Vp52Fp%0AvrekG7RB%2FIP%2BDNNb4uYgab9lZpNECoDxdsNwhdUscTw%2F4xQ3sXJ1dJ7A%2BYrq41DwudOpN8OG8Vmi%0AWNdMyMOqNblmOpdVXKWqL3Vsl%2BLiHUqz4TY3sXJ1eSRR7YTi5qZ5%2B9tnYHHXnwtzBrIK5MP6aurg%0AOlxCWrFqbX%2BgwbA7OBMwkpFq002mcl7G8GJ061DmrvHwPejX7qWuArIG4r8iZ62rGlTHCNcwLXJt%0A2Mfpe16%2F4ICq2WN2eT7G5kw5yJDo2utIPYOqoBm%2FJ%2BOO4%2FF5fL%2F9NArCWdRzNsLxq%2Bxte2wl8xWt%0A03rmeAQJ7Prq4VFzrbO3PeEFkqCuWaaHzbXsML%2FqOBaSXoR3fjfslvfjdl2y8wiqsFTmdx7R9G%2Fq%0A4UDmubZbPOPZ%2Ft5vD%2FKQzYt0auwKPT2FTKWdKifx5v%2Fqbx2Q5xO0ujq%2BbJ4y8Y2qlJXkufmpPOZB%0A%2FJCtEfIF8Mjweo2mNSfLWdnlLsNhg%2FTtbqw84AY%2FsE2mewmR%2Bn%2Fr6qc7k%2Fe1OPPb4BE%2FJ%2BKN5NF5%0AfMv7ehavNoimZWfhmfTgcVw34Aiqs3qmdwsf5k%2Fr7Vguk%2Fe2PcPb8p0%2FCNIf9MH%2F");
headers.put("x-webdriver", "0");
headers.put("x-webversion", "2.42.1");
headers.put("x-ybuitest", "0");
headers.put("Cookie", "_qimei_uuid42=1940f16332f100dd16bf5cf2f0243c7b4cd03168cc; _qimei_i_3=7cbc488a965351db94c3f8375cd677b5ffe7a5a3415d02d6b7de7b5877c7226e343266943989e2a1a3bc; _qimei_fingerprint=d93b3b700bc3f8fb1d11a344cd3638df; hy_source=web; _ga=GA1.2.276395648.1744738396; _qimei_h38=c73f0ec716bf5cf2f0243c7b02000009b19614; hy_user=XDRkptXdAb77riVo; _gcl_au=1.1.797187918.1755698236; qcloud_from=gwzcw.9736034.9736034.9736034-1760531652339; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%221963a832571736-097f672c2d3aed-26011c51-1049088-1963a83257374f%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E4%BB%98%E8%B4%B9%E5%B9%BF%E5%91%8A%E6%B5%81%E9%87%8F%22%2C%22%24latest_utm_medium%22%3A%22cpc%22%2C%22%24search_keyword_id%22%3A%22199e7dd1f2d18b0823464dad8bd58260619511049088199e7dd1f2e9df%22%2C%22%24search_keyword_id_type%22%3A%22baidu_sem_keyword_id%22%2C%22%24search_keyword_id_hash%22%3A8316794549290270%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTk2M2E4MzI1NzE3MzYtMDk3ZjY3MmMyZDNhZWQtMjYwMTFjNTEtMTA0OTA4OC0xOTYzYTgzMjU3Mzc0ZiJ9%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%22%2C%22value%22%3A%22%22%7D%2C%22%24device_id%22%3A%221963a832571736-097f672c2d3aed-26011c51-1049088-1963a83257374f%22%7D; qcstats_seo_keywords=%E4%BA%91%E4%BA%A7%E5%93%81-%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E4%B8%8E%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0-%E8%85%BE%E8%AE%AF%E4%BA%91%20TI%20%E5%B9%B3%E5%8F%B0; web_uid=ff410311-811b-43ed-8876-ba5f0596bef3; hy_token=8tE8bq6InCxff5mUqQZfc9aGHP6NPD80Cr/k258SiLJ0SRKVmpnUylkLLyDfCVTFQIe3vlNvGHX/9KEfmzuTlanNugr9/5BVCkaDX32r7lk62pppgNNABtQYsss2hRifxbe7w/eU6htaa1rBVEnlcGH2EVRYA2G9ycYj37fge+aXYc48oS2TLNpTGGIaY9XnuiVFqTYaY+5j6bV2ymKik7jWunFLIxj1wlcFOiR3NTs1xaBqMKcdysKHwkGSxNolju603cLFuPXjC5WRoLhs4szd+EC9TSFTNnEkO9rtFUwfOBq6WGdg3ButCsKQ70b4pLDoC62RLfUngW3Y97hxZdaO291KtZzw4THG+0wTtDGdLAasLW6N6Zg5E5sUBfEQbsNgMi4Cnzgduy55bzbhXt+L4pq/zX+NKWf3/92d9+6jA9ZTmWqtskhUUj9XYrWAIb0dzJXLf4U8dxqFP5FIHPJ5rJ0PkGImFv/g7L+oUjv7Wa0x6SsxUSWOstSY36BIcYNuMf0nDcuNR2qh870lV8nnhdjr0qbAm6SkiaqZm9GowHp2qC6tVAIYtW5jAhfq; _qimei_i_1=43ea7ed1925906db94c4f9315dd625e5a4b8a6a712590781e7887a582493206c61633ec73980e4ddd2abaedc");
headers.put("content-type", "application/json");
headers.put("Host", "yuanbao.tencent.com");
headers.put("Connection", "keep-alive");
try {
String response = sendPostRequest(url, requestBody, headers);
System.out.println("Response:");
System.out.println(response);
} catch (IOException e) {
e.printStackTrace();
}
}
public static String sendPostRequest(String url, String requestBody, Map<String, String> headers) throws IOException {
HttpURLConnection connection = null;
BufferedReader reader = null;
StringBuilder response = new StringBuilder();
try {
// 创建连接
URL apiUrl = new URL(url);
connection = (HttpURLConnection) apiUrl.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setDoInput(true);
// 设置请求头
for (Map.Entry<String, String> entry : headers.entrySet()) {
connection.setRequestProperty(entry.getKey(), entry.getValue());
}
// 发送请求体
try (DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream())) {
outputStream.write(requestBody.getBytes(StandardCharsets.UTF_8));
outputStream.flush();
}
// 检查响应状态
int responseCode = connection.getResponseCode();
if (responseCode != HttpURLConnection.HTTP_OK) {
throw new IOException("HTTP error code: " + responseCode);
}
// 处理text/event-stream响应
InputStream inputStream = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
String line;
while ((line = reader.readLine()) != null) {
response.append(line).append("\n");
// 如果是SSE流式响应,可以在这里实时处理每一行数据
System.out.println("Received SSE event: " + line);
}
} finally {
if (reader != null) {
reader.close();
}
if (connection != null) {
connection.disconnect();
}
}
return response.toString();
}
}
这个Java代码实现了:
- 使用HttpURLConnection创建POST请求
- 设置了所有必要的请求头
- 发送了JSON格式的请求体
- 处理text/event-stream类型的响应,逐行读取服务器推送的数据
注意事项:
- 由于这是一个SSE(Server-Sent Events)流式响应,实际应用中可能需要更复杂的处理逻辑来解析事件流格式
- 代码中包含了实时打印接收到的每一行数据的逻辑,你可以根据需要修改这部分
- 如果需要处理更复杂的SSE事件(如不同的事件类型、重连机制等),可能需要实现更完整的SSE客户端
- 某些头部信息可能包含敏感数据,实际应用中应考虑安全性问题
如果你需要更高级的SSE处理功能,可以考虑使用专门的SSE客户端库,如OkHttp的EventSource或其他Java SSE客户端实现。
我试试
好的!你试试看。这个代码应该可以正常工作,但处理SSE流式响应时可能需要根据实际返回的数据格式做一些调整。
如果你在测试过程中遇到任何问题,比如:
- 连接问题
- 响应格式解析问题
- 编码问题
- 或者需要修改为更实时的流式处理
随时告诉我,我可以帮你调整代码。特别是SSE流式响应,可能需要根据腾讯源宝API的实际返回格式来优化处理逻辑。
测试时注意观察控制台输出的每一行数据,这样可以了解API返回的具体格式。
祝你测试顺利!🚀
/* String requestBody = "{\n" + " "model": "gpt_175B_0404",\n" + " "prompt": "你好呀",\n" + " "plugin": "Adaptive",\n" + " "displayPrompt": "你好",\n" + " "displayPromptType": 1,\n" + " "options": {\n" + " "imageIntention": {\n" + " "needIntentionModel": true,\n" + " "backendUpdateFlag": 2,\n" + " "intentionStatus": true\n" + " }\n" + " },\n" + " "multimedia": [],\n" + " "agentId": "naQivTmsDa",\n" + " "supportHint": 1,\n" + " "extReportParams": null,\n" + " "isAtomInput": false,\n" + " "version": "v2",\n" + " "chatModelId": "deep_seek_v3",\n" + " "chatModelExtInfo": "{\"modelId\":\"deep_seek_v3\",\"subModelId\":\"\",\"supportFunctions\":{\"internetSearch\":\"closeInternetSearch\"}}",\n" + " "applicationIdList": [],\n" + " "supportFunctions": [\n" + " "closeInternetSearch"\n" + " ]\n" + "}";*/ 转换为fast JSONObject 对象形式,再用转换为字符串
以下是将给定的JSON字符串转换为FastJSON的JSONObject对象,然后再转换回字符串的代码实现:
import com.alibaba.fastjson.JSONObject;
public class JsonExample {
public static void main(String[] args) {
// 创建最外层的JSONObject
JSONObject requestBodyJson = new JSONObject();
// 添加顶层属性
requestBodyJson.put("model", "gpt_175B_0404");
requestBodyJson.put("prompt", "你好呀");
requestBodyJson.put("plugin", "Adaptive");
requestBodyJson.put("displayPrompt", "你好");
requestBodyJson.put("displayPromptType", 1);
// 创建options对象
JSONObject options = new JSONObject();
JSONObject imageIntention = new JSONObject();
imageIntention.put("needIntentionModel", true);
imageIntention.put("backendUpdateFlag", 2);
imageIntention.put("intentionStatus", true);
options.put("imageIntention", imageIntention);
requestBodyJson.put("options", options);
// 添加其他属性
requestBodyJson.put("multimedia", new JSONObject().newJSONArray()); // 空数组
requestBodyJson.put("agentId", "naQivTmsDa");
requestBodyJson.put("supportHint", 1);
requestBodyJson.put("extReportParams", null);
requestBodyJson.put("isAtomInput", false);
requestBodyJson.put("version", "v2");
requestBodyJson.put("chatModelId", "deep_seek_v3");
// 注意:chatModelExtInfo 是一个字符串形式的JSON
String chatModelExtInfoStr = "{\"modelId\":\"deep_seek_v3\",\"subModelId\":\"\",\"supportFunctions\":{\"internetSearch\":\"closeInternetSearch\"}}";
requestBodyJson.put("chatModelExtInfo", chatModelExtInfoStr);
requestBodyJson.put("applicationIdList", new JSONObject().newJSONArray()); // 空数组
// 创建supportFunctions数组
JSONObject supportFunctionsArray = new JSONObject().newJSONArray();
supportFunctionsArray.add("closeInternetSearch");
requestBodyJson.put("supportFunctions", supportFunctionsArray);
// 将JSONObject转换为字符串
String jsonString = requestBodyJson.toJSONString();
System.out.println("Generated JSON:");
System.out.println(jsonString);
}
}
这段代码会生成与原始JSON字符串等效的JSON对象,并输出如下结果:
{
"model":"gpt_175B_0404",
"prompt":"你好呀",
"plugin":"Adaptive",
"displayPrompt":"你好",
"displayPromptType":1,
"options":{
"imageIntention":{
"needIntentionModel":true,
"backendUpdateFlag":2,
"intentionStatus":true
}
},
"multimedia":[],
"agentId":"naQivTmsDa",
"supportHint":1,
"extReportParams":null,
"isAtomInput":false,
"version":"v2",
"chatModelId":"deep_seek_v3",
"chatModelExtInfo":"{\"modelId\":\"deep_seek_v3\",\"subModelId\":\"\",\"supportFunctions\":{\"internetSearch\":\"closeInternetSearch\"}}",
"applicationIdList":[],
"supportFunctions":["closeInternetSearch"]
}
关键点说明:
- 使用
JSONObject创建嵌套的JSON结构 chatModelExtInfo字段保持为字符串形式(因为它本身就是JSON字符串)- 空数组使用
newJSONArray()方法创建 - 使用
toJSONString()方法将JSON对象转换为字符串 - 保持了原始JSON的所有结构和值
这种方法比直接使用字符串更灵活,因为:
- 可以动态修改字段值
- 避免手动处理转义字符
- 更容易维护复杂的JSON结构
- 减少因格式错误导致的bug