gpt4 book ai didi

java - 从 json 对象字符串转换为 Java 对象 om.google.gson.JsonSyntaxException

转载 作者:行者123 更新时间:2023-12-02 01:07:53 24 4
gpt4 key购买 nike

我有一个关于将字符串解析为 java 对象的问题。我有这样的回应:

{
"status": "success",
"paginated": false,
"data": [{
"user": {
"id": 21,
"email": "kjhk@gmail.com",
"access_token": "ai_wy-tTLLEyRCPAF86dWPJdQ77gefsTPwBkvtlEkNs",
"test": []
}
}],
"message": ""
}

我想获取状态

我创建了这个类并仅设置了状态,因为这是我想要的唯一字段,并且所有其余响应都不重要

package responseObjects;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.ArrayList;
import java.util.List;

public class LogInResponse {



@JsonIgnoreProperties(ignoreUnknown = true)
@JsonProperty("status")
public String status;


public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

}

在程序中,我发送请求并获取响应,但是当我尝试将其设置为 java 对象时,它失败了int 这一行LogInResponse res = gson.fromJson(response.body().toString(),LogInResponse.class);

public class TestMain {
OkHttpClient client = new OkHttpClient();
JsonObject bodyJson = new JsonObject();
JsonObject responseJson = new JsonObject();

MediaType JSON = MediaType.parse("application/json; charset=utf-8");

public String httpPost(String url, String json) throws IOException {
RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response = client.newCall(request).execute();
String strResponse = response.body().string();
JsonObject jsonObjectResponse = new JsonParser().parse(strResponse).getAsJsonObject();
Gson gson = new Gson();
LogInResponse res = gson.fromJson(response.body().toString(),LogInResponse.class);
return response.body().string();
}

这是异常(exception)

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $

at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:226)
at com.google.gson.Gson.fromJson(Gson.java:927)
at com.google.gson.Gson.fromJson(Gson.java:892)
at com.google.gson.Gson.fromJson(Gson.java:841)
at com.google.gson.Gson.fromJson(Gson.java:813)

有人可以告诉我出了什么问题吗?我如何从响应中获取状态?问候

最佳答案

来自 OkHttp 的有关 body() 的文档

Returns a non-null value if this response was passed to Callback.onResponse or returned from Call.execute. Response bodies must be closed and may be consumed only once.

也就是说,您使用它两次三次(包括您的 return 语句)。您已将其包含在 strResponse 中。继续使用那个。然后close()它,当你在它的时候。

关于java - 从 json 对象字符串转换为 Java 对象 om.google.gson.JsonSyntaxException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59791260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com