通过java从URL获取Json数组
我们的中央银行以多种方式提供货币汇率。例如,一种日期货币很容易获得: (它以简单大括号{作为典型的Json开始) 但另一个表-日期上的每种货币:在代码行后返回“nullSession”通过java从URL获取Json数组,java,arrays,json,idempiere,Java,Arrays,Json,Idempiere,我们的中央银行以多种方式提供货币汇率。例如,一种日期货币很容易获得: (它以简单大括号{作为典型的Json开始) 但另一个表-日期上的每种货币:在代码行后返回“nullSession” if (httpURLConnection.getResponseCode() == okRespCode) { ... 尽管这个Json在webrowser中没有任何问题,但它以方括号[作为数组]开始 你曾经遇到并解决过这样的问题吗 请从我的iDempiere开发IDE中找到以下异常堆栈跟踪 PM o
if (httpURLConnection.getResponseCode() == okRespCode) { ...
尽管这个Json在webrowser中没有任何问题,但它以方括号[作为数组]开始
你曾经遇到并解决过这样的问题吗
请从我的iDempiere开发IDE中找到以下异常堆栈跟踪
PM org.compiere.process.svr进程严重:nullSession java.lang.NoSuchFieldError:nullSession位于
sun.security.ssl.ClientHandshaker.getKickstartMessage(ClientHandshaker.java:1343)
位于sun.security.ssl.Handshaker.kickstart(Handshaker.java:1117)
sun.security.ssl.SSLSocketImpl.kickstartHandshake(SSLSocketImpl.java:1500)
在
sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
在
sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1416)
在
sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1400)
在
net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
在
net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
在
net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1570)
在
net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1498)
在
java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
在
net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:352)
位于one.stabilis.utils.JsonUtils.readJsonToString(JsonUtils.java:75)
在
readArrayOfExchangeRatesTable(JsonUtils.java:108)
在
publishedOnDateTable(JsonUtils.java:55)
在
一个.stabilis.utils.JsonUtils.getPublishedOnDateTable(JsonUtils.java:32)
在
一个.stabilis.impconvrates.ImportCurrencyRates.doIt(ImportCurrencyRates.java:84)
位于org.compiere.process.SvrProcess.process(SvrProcess.java:201)
org.compiere.process.SvrProcess.startProcess(SvrProcess.java:147)位于
org.adempiere.util.ProcessUtil.startJavaProcess(ProcessUtil.java:172)
在
org.adempiere.util.ProcessUtil.startJavaProcess(ProcessUtil.java:139)
在
org.adempiere.util.ProcessUtil.startJavaProcess(ProcessUtil.java:128)
在
org.compiere.interfaces.impl.ServerBean.process(ServerBean.java:78)
在
org.compiere.apps.AbstractProcessCtl.startProcess(AbstractProcessCtl.java:429)
在
org.compiere.apps.AbstractProcessCtl.run(AbstractProcessCtl.java:234)
位于org.adempiere.webui.apps.WProcessCtl.process(WProcessCtl.java:197)
在
org.adempiere.webui.apps.AbstractProcessDialog$ProcessDialogRunnable.doRun(AbstractProcessDialog.java:1083)
位于org.adempiere.util.ContextRunnable.run(ContextRunnable.java:38)
在
org.adempiere.webui.apps.DesktopRunnable.run(DesktopRunnable.java:40)
在
Executors$RunnableAdapter.call(Executors.java:511)
在java.util.concurrent.FutureTask.run(FutureTask.java:266)处
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
在
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
在
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
在
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
运行(Thread.java:748)
您可以将响应映射为
List
或List
因为响应本身是一个数组而不是一个对象,所以您可以这样做
String responseJson = "some array of objects";
List<CustomMapperObject> rates = objectMapper.readValue(responseJson,
ParameterizedTypeReference<List<CustomMapperObject>>() {
});
String responseJson=“一些对象数组”;
列表速率=objectMapper.readValue(responseJson,
参数化类型引用(){
});
或
ResponseEntity responseObject=
restemplate.exchange(uri.toUriString(),HttpMethod.GET,
httpEntity,
新的ParameteredTypeReference(){
});
我建议您查看一下以供参考您可以将响应映射为
列表
或列表
因为响应本身是一个数组而不是一个对象,所以您可以这样做
String responseJson = "some array of objects";
List<CustomMapperObject> rates = objectMapper.readValue(responseJson,
ParameterizedTypeReference<List<CustomMapperObject>>() {
});
String responseJson=“一些对象数组”;
列表速率=objectMapper.readValue(responseJson,
参数化类型引用(){
});
或
ResponseEntity responseObject=
restemplate.exchange(uri.toUriString(),HttpMethod.GET,
httpEntity,
新的ParameteredTypeReference(){
});
我建议大家看看这本书,以供参考