gpt4 book ai didi

android - 无法从 Android 中的 mongodb 服务器获取文档列表

转载 作者:行者123 更新时间:2023-11-30 04:00:31 25 4
gpt4 key购买 nike

我正在使用 mongodb 作为我的 android 应用程序的云服务器。Mongodb java 库在 Android 中不起作用,所以我正在使用 rest api。我编写了以下代码来获取 json 响应并将它们转换为 MyClass 但它给出了 IllegalStateException与

    java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_Object at line 1 column 35

代码:

              try {  HttpGet mRequest = new HttpGet("https://api.mongolab.com/api/1/databases/mydb/collections/mycol?apiKey=myKey");    

DefaultHttpClient client = new DefaultHttpClient();
try {
HttpResponse response = client.execute(mRequest);

InputStream source = response.getEntity().getContent();

Reader reader = new InputStreamReader(source);

Gson gson = new Gson();

Type typeOfCollectionOfMyObject = new TypeToken<Collection<MYObject>>(){}.getType();

quizDBObjectList = gson.fromJson(reader, typeOfCollectionOfMyObject);

} catch (IOException e) {
mRequest.abort();
}

这不是完整的代码,但我在这个 block 中遇到了异常。有什么帮助吗?

MYObject 的定义是

           public class MYObject { 

private long index ;
private String question;
private String answer;
private String optionA;
private String optionB;
private String optionC;
private String optionD;
private String createdAt;
private String active;
//getters and setters of data members
}

我得到的回复是:

                           [ { "_id" : { "$oid" : "505ab996aded66f4c1ccc7f2"} , "index" : 0 , "question" : "some text ?" , "optiona" : "optionA" , "optionb" : "optionB" , "optionc" : "OptionC" , "optiond" : "optionD" , "answer" : "answer" , "created_at" : { "$date" : "2012-09-20T06:37:04.306Z"} , "Active" : "1"} , { "_id" : { "$oid" : "505ab997aded66f4c1ccc7f3"} , "index" : 1 , ..../objects like that]

显然我不知道服务器会响应 _id。你能给我正确的类定义来将这个 json 对象转换到我的自定义类中吗?谢谢

最佳答案

java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_Object at line 1 column 35

这说明了一切,应该有某个地方 [ 而不是 {。也许您得到的是单个对象而不是数组?

以上内容可能有帮助,也可能没有帮助。为了得到更好的答案,需要以下内容:

  • 定义MYObject
  • 准确解析的字符串

您可以获得解析后的字符串,例如通过从 reader 读取到 StringBuider 或更简单地使用 Guava 的 CharStreams.toString(reader)

关于android - 无法从 Android 中的 mongodb 服务器获取文档列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12567610/

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