Java 如何让我的HttpUrlConnection以JSON格式返回数据?
我在Java应用程序和web应用程序之间有一个Java 如何让我的HttpUrlConnection以JSON格式返回数据?,java,jquery,json,get,httpurlconnection,Java,Jquery,Json,Get,Httpurlconnection,我在Java应用程序和web应用程序之间有一个HttpUrlConnection。在Java应用程序上,我有以下代码: exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, response.getBytes().length); exchange.getResponseHeaders().set("content-type", "application/json"); exchange.getResponseBody().write(r
HttpUrlConnection
。在Java应用程序上,我有以下代码:
exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, response.getBytes().length);
exchange.getResponseHeaders().set("content-type", "application/json");
exchange.getResponseBody().write(response.getBytes());
exchange.close();
我认为第二行的代码是错误的,但我不知道该怎么做。交换类型为HttpExchange
字符串响应包含:{batteryMax:22000,batteryCharge:860,carRange:350}
我使用以下代码检索数据:
var jsonData;
var jqxhr = $.getJSON("http://145.93.73.69:8080/getInfo", function(data) {
jsonData = data
})
.error(function() { alert("error"); });
error
总是会收到警报,jsonData
保持未定义且jqxhr。responseText
包含{batteryMax:22000,batteryCharge:860,carRange:350}
我必须改变什么才能使它工作?Json必须是这样的
{ "batteryMax": 22000, "batteryCharge": 860, "carRange": 350 }
Json必须是这样的
{ "batteryMax": 22000, "batteryCharge": 860, "carRange": 350 }
我找到了解决办法:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
//JsonNode df = mapper.readValue(response, JsonNode.class);
byte[] responseInBytes = mapper.writeValueAsBytes(response);
我使用Jackson从我的字符串中创建JSON节点(+在键周围加上单引号),它可以工作。我找到了解决方案:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
//JsonNode df = mapper.readValue(response, JsonNode.class);
byte[] responseInBytes = mapper.writeValueAsBytes(response);
我使用Jackson从我的字符串中创建一个JSON节点(+在键周围加上单引号),它可以工作。检查控制台,错误是什么?
145.93.73.69:8080
是您的网站吗?您的字符串响应不是有效的JSON。您应该对键和值使用引号,如@Arun Killu所述。145.93.73.69是Java应用程序运行的地方。控制台没有显示任何错误检查控制台,错误是什么?145.93.73.69:8080
是您的网站吗?您的字符串响应不是有效的JSON。您应该对键和值使用引号,如@Arun Killu所述。145.93.73.69是Java应用程序运行的地方。控制台没有显示任何错误。根据RFC 4627第2.2节和第2.5节,字段名必须是JSON字符串。如果不是数字,甚至要引用的值?我说的是字段名(确切地说是成员名)。至于成员值,如果它们是字符串,那么它们必须是字符串,是的。在这里,值是JSON数字,因此不能引用22000
是一个JSON数字,“22000”
是一个JSON字符串。你说得对,我改了。虽然你在使用jsonp,但它并没有改变问题?json内容是在您的服务器中还是来自其他服务器?/Yep,根据RFC 4627第2.2节和第2.5节,字段名必须是json字符串。如果不是数字,甚至要引用的值?我指的是字段名(确切地说是成员名)。至于成员值,如果它们是字符串,那么它们必须是字符串,是的。在这里,值是JSON数字,因此不能引用22000
是一个JSON数字,“22000”
是一个JSON字符串。你说得对,我改了。虽然你在使用jsonp,但它并没有改变问题?json内容是在您的服务器中还是来自其他服务器/