关于jsonArray 和jsonobject 在servlet中运行出错问题;

本文探讨了将JSON包作为userlibrary使用时可能出现的问题,并提供了解决方案,即直接将JSON包复制到项目的lib目录下。

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

如果把json包弄成user li'brary 就可能出错 再导入项目中就可能出错。原理(当运行是servlet时会在lib 中找 json的包,可是。。。。。)like:






如果改成 把json的包复制到lib 下就不会出错了 like:

package com.api.hw.hssl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.api.hw.utils.Result; import com.api.hw.utils.WebJsonUtils; import com.api.integration.web.OAuth2ServerAction; import weaver.conn.RecordSet; import weaver.general.BaseBean; import weaver.integration.logging.Logger; import weaver.integration.logging.LoggerFactory; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import java.util.HashMap; @Path("/hw/hssl") public class SyncOrderAPI { private Logger logger = LoggerFactory.getLogger(OAuth2ServerAction.class); @POST @Path("/SynOrders") @Produces("application/json") public Object getSyncOrderinfo(@Context HttpServletRequest request, @Context HttpServletResponse response){ this.logger.info("================getSyncOrderInfo start...==============================="); HashMap retMap = new HashMap(); Result result = null; try { String sql = "Insert INTO Order(orderType, start_datetime, end_datetime, discount, trainSeat,cabinType, actualPlaceOfDeparture, actualDestination, travelername,roomType, orderDate, orderAmount, vehicleType, originalOrderNo, universalType)values ('住宿','2025-03-01 14:00:00','2025-03-04 14:00:00' ,'0.9','二等座','经济舱','东莞','北京','张三','标间','2025-07-08','1000.00','经济型','202507060102','火车席位')"; RecordSet recordSet = getRecordSet(sql); JSONArray data = new JSONArray(); while(recordSet.next()){ JSONObject jsonObject = new JSONObject(); jsonObject.put("orderType",recordSet.getString("orderType")); jsonObject.put("start_datetime",recordSet.getString("start_datetime")); jsonObject.put("end_datetime",recordSet.getString("end_datetime")); jsonObject.put("discount",recordSet.getString("discount")); jsonObject.put("trainSeat",recordSet.getString("trainSeat")); jsonObject.put("cabinType",recordSet.getString("cabinType")); jsonObject.put("actualPlaceOfDeparture",recordSet.getString("actualPlaceOfDeparture")); jsonObject.put("actualDestination",recordSet.getString("actualDestination")); jsonObject.put("travelername",recordSet.getString("travelername")); jsonObject.put("roomType",recordSet.getString("roomType")); jsonObject.put("orderDate",recordSet.getString("orderDate")); jsonObject.put("orderAmount",recordSet.getString("orderAmount")); jsonObject.put("vehicleType",recordSet.getString("vehicleType")); jsonObject.put("originalOrderNo",recordSet.getString("originalOrderNo")); jsonObject.put("universalType",recordSet.getString("universalType")); data.add(jsonObject); } result = Result.build(200, "success!!!", data); return result; }catch (Exception e) { logger.error(e.getMessage()); result = Result.build(500, "=====error occured !" + e.getMessage(), retMap); } return result; } public static RecordSet getRecordSet(String sql) { RecordSet recordSet = new RecordSet(); BaseBean logInfo = new BaseBean(); try { recordSet.execute(sql); } catch (Exception e) { logInfo.writeLog("数据异常:" + e); } return recordSet; } }
07-10
package com.example.kgqaapp.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletResponse; import okhttp3.*; import org.json.JSONArray; import org.json.JSONObject; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.concurrent.TimeUnit; @Controller @RequestMapping("/v1") public class OpenAIStream { // 1. 配置 MaxKB 接口地址 @Value("${old_maxkb_url}") private String url; // 2. 配置 MaxKB 的 API Key @Value("${maxkb_apikey}") private String apiKey; private final OkHttpClient HTTP_CLIENT = new OkHttpClient.Builder() .connectTimeout(60, TimeUnit.SECONDS) .readTimeout(120, TimeUnit.SECONDS) .writeTimeout(60, TimeUnit.SECONDS) .build(); @PostMapping("/test") public void demo(@RequestBody String message, HttpServletResponse res) throws IOException { // 3. 设置响应头 res.setContentType("text/event-stream;charset=UTF-8"); res.setHeader("Cache-Control", "no-cache"); // 4. 构造请求体 MediaType mediaType = MediaType.parse("application/json"); JSONObject json = new JSONObject(); json.put("messages", new JSONArray(message)); json.put("stream", true); okhttp3.RequestBody body = okhttp3.RequestBody.create(mediaType, json.toString()); Request request = new Request.Builder() .url(url) // MaxKB 完整地址 .post(body) .addHeader("Content-Type", "application/json;charset=UTF-8") .addHeader("Authorization", "Bearer " + apiKey) // 或 "Api-Key: " + apiKey .build(); try (ServletOutputStream out = res.getOutputStream(); Response response = HTTP_CLIENT.newCall(request).execute()) { if (!response.isSuccessful()) { out.write(("event: error\ndata: MaxKB error " + response.code() + "\n\n").getBytes(StandardCharsets.UTF_8)); out.flush(); return; } // 5. 流式转发 try (InputStream in = response.body().byteStream()) { byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); out.flush(); } } } } }这里出问题了,请帮我看看
最新发布
07-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值