Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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
google http java客户端json更新现有对象_Java_Json_Google Http Client - Fatal编程技术网

google http java客户端json更新现有对象

google http java客户端json更新现有对象,java,json,google-http-client,Java,Json,Google Http Client,我正在尝试在android上使用google http java客户端并解析来自服务器的JSON响应。 我正在使用以下代码(由项目示例提供) 而且对于新对象,一切都很好 result = response.parseAs(PxUser.class); 但是我需要用json字符串中的数据更新一个现有的对象。 对于jackson,我只能使用以下代码,但是对于google客户端,我找不到任何解决方案 InputStream in = -get-http-reponse- ObjectMapper m

我正在尝试在android上使用google http java客户端并解析来自服务器的JSON响应。 我正在使用以下代码(由项目示例提供)

而且对于新对象,一切都很好

result = response.parseAs(PxUser.class);
但是我需要用json字符串中的数据更新一个现有的对象。 对于jackson,我只能使用以下代码,但是对于google客户端,我找不到任何解决方案

InputStream in = -get-http-reponse-
ObjectMapper mapper = new ObjectMapper();
ObjectReader reader = mapper.readerForUpdating(MySingleton.getInstance());
reader.readValue(InputStream in);
因此,我需要一种方法来更新现有对象,就像这个jackson示例一样,但要使用客户端

有办法吗?我必须使用jackson-databind.jar吗?我怎样才能做到这一点? 提前谢谢


PS:如果需要,我可以切换到gson,没问题,这取决于接收API调用的端点,以及它期望请求的样子

GoogleHTTPJava客户端只需为您处理调用、编码和解码对象、指数退避等过程。由您来创建满足您需要的请求以及服务器期望的外观

很可能,发出请求的API希望通过PUT请求进行对象更新。更新的对象很可能是请求的内容,以某种特定的格式编码。假设是JSON,因为您正在解析JSON响应。因此,出于示例的目的,假设您要请求一个对象,修改它,然后将其发送回

首先,获取资源并将其解析到对象中:

PxUser myUser = response.parseAs(PxUser.class);
然后以某种方式修改对象

myUser.setName("Frodo Baggins");
现在,您希望将其作为PUT请求中的JSON对象发送回服务器:

// httpbin.org is a wonderful URL to test API calls against as it returns whatever if received.
GenericUrl url = new GenericUrl("http://httpbin.org/put");
JsonHttpContent content = new JsonHttpContent(new JacksonFactory(), myUser);
HttpRequest request = requestFactory.buildPutRequest(url, content);
HttpResponse response = request.execute();
System.out.println(response.parseAsString());
如何编码和更新内容的细节完全取决于您和API的规范。如果您也在创建接收呼叫的服务器,那么这就特别容易了

如果您使用的是预先存在的API,则可能需要使用 具体问题(API“x”需要一个类似于废话的响应;如何在GoogleHTTPJava客户端中做到这一点)


如果您使用的是GoogleAPI,那么您需要使用为您完成所有这些工作的

您可能想将其标记为java以提高可视性嘿,谢谢您的回答,但我认为您错了。我不想更新服务器上的对象-我想解析对应用程序中现有对象的响应。1.使用一些数据创建java对象2。获取对服务器3的请求。将带有附加数据的JSON响应解析到我现有的java对象中对不起,听起来好像我搞错了。您正在修改现有的Java对象,而不是服务器上的资源?我认为这个用例还没有被显式处理,但是您可以扩展低级JSON解析器来完成这项工作?
// httpbin.org is a wonderful URL to test API calls against as it returns whatever if received.
GenericUrl url = new GenericUrl("http://httpbin.org/put");
JsonHttpContent content = new JsonHttpContent(new JacksonFactory(), myUser);
HttpRequest request = requestFactory.buildPutRequest(url, content);
HttpResponse response = request.execute();
System.out.println(response.parseAsString());