Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让我的HttpUrlConnection以JSON格式返回数据?_Java_Jquery_Json_Get_Httpurlconnection - Fatal编程技术网

Java 如何让我的HttpUrlConnection以JSON格式返回数据?

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

我在Java应用程序和web应用程序之间有一个
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内容是在您的服务器中还是来自其他服务器/