gpt4 book ai didi

java.lang.IllegalStateException : Expected BEGIN_OBJECT but was STRING at line 1 column 62 错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:58:27 24 4
gpt4 key购买 nike

我面临一个关于 GSON json 到 Java 的问题。我在这里查找了很多帖子,但找不到我的问题的解决方案。所以我在这里列出了我的问题。我正在尝试获取 json 中有一个 Map 的数据,但我无法检索数据。在我的日志中,我可以看到只有这么多数据出现然后它抛出异常。有人请指导我通过。非常感谢!

这是我从我正在处理的 Android 应用程序中点击 URL 的 Json 数据

编辑

{
"success" : true,
"messages" : {
"success" : [
"SEARCH_QUERY_SUCCESS"
]
},
"session" : {
"id" : "cn694ivr8bmqnrveh9n8841oh7",
"expire" : "",
"YII_CSRF_TOKEN" : "4fa0ae103b547836241f5278311839b407050919"
},
"metadata" : {
"product_count" : "4458",
"category_ids" : "3",
"results" : [{
"id" : "105089",
"data" : {
"sku" : "MA851AA10ZLX",
"name" : "Alexa Mid Rise Super Skinny Leg",
"new-product" : false,
"url" : "http:\/\/theiconic.bugfoot.de\/mobile-api\/Alexa-Mid-Rise-Super-Skinny-Leg-105089.html",
"simples" : {
"MA851AA10ZLX-406437" : {},
"MA851AA10ZLX-406438" : {},
"MA851AA10ZLX-406439" : {},
"MA851AA10ZLX-406440" : {},
"MA851AA10ZLX-406441" : {},
"MA851AA10ZLX-406442" : {},
"MA851AA10ZLX-406443" : {},
"MA851AA10ZLX-406444" : {
"meta" : {
"sku" : "MA851AA10ZLX-406444",
"price" : "149.99",
"caching_hash" : "78ddaaf930f8bd0e0bf595c25643683d",
"shipment_cost_item" : "0.00",
"shipment_cost_order" : "0.00",
"tax_percent" : "10.00",
"quantity" : "2",
"cost" : "64.09",
"size_brand" : "W31\/L34",
"size" : "W31\/L34",
"size_position" : "200",
"3hours_shipment_available" : true,
"estimated_delivery" : "",
"estimated_delivery_position" : ""
},
"attributes" : {
"sort_order" : "0",
"size" : "W31\/L34"
}
}
}
}
}
]
}
}

编辑

这是我用于解析的网络类

String jsonString = null;

try {
HttpGet httppost = new HttpGet(URL);
HttpClient httpClient = new DefaultHttpClient();
if (httpClient != null) {
HttpResponse response = httpClient.execute(httppost);
BufferedReader reader = new BufferedReader(
new InputStreamReader(
response.getEntity().getContent(), "UTF-8"));
jsonString = reader.readLine();
}

} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(jsonString);

if (jsonString != null) {
Bean obj=new Gson().fromJson(jsonString, Bean.class);
Message msg = new Message();
msg.obj = obj;
responseHandler.sendMessage(msg);
//obj can be sent to a handler
}
}
}

这是包含 Map 的 Simples Bean 类

public class Simples {
private Map<String, KeyMap> keyMap;
public Map<String, KeyMap> getKeyMap() {return keyMap;}
public void setKeyMap(Map<String, KeyMap> keyMap) {this.keyMap = keyMap;}}

这是我的 KeyMap Bean 类

public class KeyMap {

private Meta meta;
private Attributes attributes;

public Meta getMeta() {
return meta;
}

public void setMeta(Meta meta) {
this.meta = meta;
}

public Attributes getAttributes() {
return attributes;
}

public void setAttributes(Attributes attributes) {
this.attributes = attributes;
}
}

最佳答案

实际上你得到了错误 BEGIN_OBJECT 但是是 STRING 因为 gson 期待对象而不是字符串,而且它是 json 中的一个对象,你错误地将你的类映射到 Bean 类中,而你没有在此处发布 Bean,简单类胶水代码。

您的 JSON 模型类可以像这样映射

public class ProductInfo {
private boolean success;
private Map<String, String[]> messages;
private SessionData session;
private MetaData metadata;
}
public class SessionData {
private String id;
private String expire;
private String YII_CSRF_TOKEN;
}
public class MetaData {
private String product_count;
private String category_ids;
private List<Result> results;
}
public class Result {
private String id;
private Data data;
}
public class Data {
private String sku;
private String name;
@SerializedName(value = "new-product")
private String newProduct;
private String url;
Map<String, KeyMap> simples;
}
public class KeyMap {
private Meta meta;
private Attributes attributes;
}

public class Meta {
private String sku;;
private String price;
private String caching_hash;
private String shipment_cost_item;
private String shipment_cost_order;
private String tax_percent;
private String quantity;
private String cost;
private String size_brand;
private String size;
private String size_position;
@SerializedName(value = "3hours_shipment_available")
private String hours_shipment_available;
private String estimated_delivery;
private String estimated_delivery_positio;
}
public class Attributes {
private String sort_order;
private String size;
}

最后反序列化

ProductInfo productInfo = gson.fromJson(reader, ProductInfo.class);

享受 :)

关于java.lang.IllegalStateException : Expected BEGIN_OBJECT but was STRING at line 1 column 62 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20376207/

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