通过java从URL获取Json数组

通过java从URL获取Json数组,java,arrays,json,idempiere,Java,Arrays,Json,Idempiere,我们的中央银行以多种方式提供货币汇率。例如,一种日期货币很容易获得: (它以简单大括号{作为典型的Json开始) 但另一个表-日期上的每种货币:在代码行后返回“nullSession” if (httpURLConnection.getResponseCode() == okRespCode) { ... 尽管这个Json在webrowser中没有任何问题,但它以方括号[作为数组]开始 你曾经遇到并解决过这样的问题吗 请从我的iDempiere开发IDE中找到以下异常堆栈跟踪 PM o

我们的中央银行以多种方式提供货币汇率。例如,一种日期货币很容易获得: (它以简单大括号{作为典型的Json开始)

但另一个表-日期上的每种货币:在代码行后返回“nullSession”

    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(){
});
我建议大家看看这本书,以供参考