Java 如何在couchbase(Android)中迭代存储和检索包含嵌套JSON对象的JSONArray
试图在Android中使用此代码将Java 如何在couchbase(Android)中迭代存储和检索包含嵌套JSON对象的JSONArray,java,android,json,couchbase-lite,couchbase-view,Java,Android,Json,Couchbase Lite,Couchbase View,试图在Android中使用此代码将JSON数组存储到Couchbase中,但失败。请帮助了解如何成功存储它,以及如何迭代接收所有数据。查看了Couchbase文档,但仍然卡住了。在存储和接收之前,我是否必须将JSON数组转换为对象?或者,从API private void storeLocalData() { //COUCHBASE IMPLEMENTATION // Create a manager manager = null;
JSON数组
存储到Couchbase
中,但失败。请帮助了解如何成功存储它,以及如何迭代接收所有数据。查看了Couchbase
文档,但仍然卡住了。在存储和接收之前,我是否必须将JSON数组
转换为对象?或者,从API
private void storeLocalData() {
//COUCHBASE IMPLEMENTATION
// Create a manager
manager = null;
try {
manager = new Manager(new AndroidContext(getActivity()), Manager.DEFAULT_OPTIONS);
} catch (IOException e) {
e.printStackTrace();
}
// Create or open the database named 'saved_project_sample'
database = null;
try {
database = manager.getDatabase("saved_project_sample");
} catch (CouchbaseLiteException e) {
e.printStackTrace();
}
// Create a new document
document = database.createDocument();
try {
//Cast json String into JSON Array
JSONArray jsonArray= new JSONArray(json);
HashMap<String, Object> properties = new HashMap<>();
for (int k = 0; k < jsonArray.length(); k++) {
JSONObject objJson = jsonArray.getJSONObject(k);
Object id = objJson.getString("id");
Object title = objJson.getString("title");
Object owner_id = objJson.getString("owner_id");
Object description = objJson.getString("description");
Object status = objJson.getString("status");
Object start_time = objJson.getString("start_time");
Object finish_time = objJson.getString("finish_time");
Object created = objJson.getString("created");
Object modified = objJson.getString("modified");
properties.put("id", id);
properties.put("title", title);
properties.put("owner_id", owner_id);
properties.put("description", description);
properties.put("status", status);
properties.put("start_time", start_time);
properties.put("finish_time", finish_time);
properties.put("created", created);
properties.put("modified", modified);
document.putProperties(properties);
Toast.makeText(getActivity(), "Successful Storage", Toast.LENGTH_SHORT).show();
}
} catch (CouchbaseLiteException e) {
e.printStackTrace();
Toast.makeText(getActivity(), "Unsuccessful", Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getActivity(), "Unsuccessful", Toast.LENGTH_SHORT).show();
}
}
使用和类,则不需要手动获取每个变量
public class UserDocument{
public int id;
public String title;
public String owner_id;
public String description;
public String status;
public Date start_time;
public Date finish_time;
public Date created;
public Date modified;
public UserDocument() {}; //Needs an empty constructor for reflection;
}
现在你有了这门课,你就可以写了
UserDocument[] userDocuments = new Gson().fromJson(json, UserDocument[].class);
for(UserDocument userDocument : userDocument){
HashMap<String, Object> properties = new HashMap<>();
properties.put("id", userDocument.id);
properties.put("title", userDocument.title);
properties.put("owner_id", userDocument.owner_id);
properties.put("description", userDocument.description);
properties.put("status", userDocument.status);
properties.put("start_time", userDocument.start_time);
properties.put("finish_time", userDocument.finish_time);
properties.put("created", userDocument.created);
properties.put("modified", userDocument.modified);
try {
document.putProperties(properties);
} catch (CouchbaseLiteException e) {
e.printStackTrace(); //This will tell you why it fails
}
}
UserDocument[]userDocuments=new Gson().fromJson(json,UserDocument[].class);
for(UserDocument UserDocument:UserDocument){
HashMap属性=新建HashMap();
properties.put(“id”,userDocument.id);
properties.put(“title”,userDocument.title);
properties.put(“owner\u id”,userDocument.owner\u id);
properties.put(“description”,userDocument.description);
properties.put(“status”,userDocument.status);
properties.put(“start\u time”,userDocument.start\u time);
properties.put(“finish\u time”,userDocument.finish\u time);
properties.put(“created”,userDocument.created);
properties.put(“modified”,userDocument.modified);
试一试{
文件、财产(财产);
}捕获(CouchBaselite异常){
e、 printStackTrace();//这将告诉您它失败的原因
}
}
只需定义属性的类型,然后GSON将检查属性是否可以成为该类型不可能将hashmap的多个属性放入单个Couchbase doucment中 您每次都可以通过创建新文档
document = database.createDocument();
或
以前
document.putProperties(properties);
我下面的代码现在可以正常工作而不会崩溃
ProjectSummary[] projectSummaries = new Gson().fromJson(json, ProjectSummary[].class);
int project_number=1;
HashMap<String, Object> properties = new HashMap<>();
for (ProjectSummary projectSummary : projectSummaries) {
// Create a new document - Every Project-List Will Be Its Own Document
document = database.getDocument("Project-"+ project_number);
properties.put("id", projectSummary.id);
properties.put("title", projectSummary.title);
properties.put("owner_id", projectSummary.owner_id);
properties.put("description", projectSummary.description);
properties.put("status", projectSummary.status);
properties.put("start_time", projectSummary.start_time);
properties.put("finish_time", projectSummary.finish_time);
properties.put("created", projectSummary.created);
properties.put("modified", projectSummary.modified);
try {
document.putProperties(properties);
Toast.makeText(context, project_number+"- ID Saved", Toast.LENGTH_SHORT).show();
} catch (CouchbaseLiteException e) {
e.printStackTrace(); //This will tell you why it fails
Toast.makeText(context, "failure", Toast.LENGTH_SHORT).show();
}
//Increase Project Number
project_number++;
}
Toast.makeText(context, "Project Download Successful \n" , Toast.LENGTH_SHORT).show();
}
document.putProperties(properties);
ProjectSummary[] projectSummaries = new Gson().fromJson(json, ProjectSummary[].class);
int project_number=1;
HashMap<String, Object> properties = new HashMap<>();
for (ProjectSummary projectSummary : projectSummaries) {
// Create a new document - Every Project-List Will Be Its Own Document
document = database.getDocument("Project-"+ project_number);
properties.put("id", projectSummary.id);
properties.put("title", projectSummary.title);
properties.put("owner_id", projectSummary.owner_id);
properties.put("description", projectSummary.description);
properties.put("status", projectSummary.status);
properties.put("start_time", projectSummary.start_time);
properties.put("finish_time", projectSummary.finish_time);
properties.put("created", projectSummary.created);
properties.put("modified", projectSummary.modified);
try {
document.putProperties(properties);
Toast.makeText(context, project_number+"- ID Saved", Toast.LENGTH_SHORT).show();
} catch (CouchbaseLiteException e) {
e.printStackTrace(); //This will tell you why it fails
Toast.makeText(context, "failure", Toast.LENGTH_SHORT).show();
}
//Increase Project Number
project_number++;
}
Toast.makeText(context, "Project Download Successful \n" , Toast.LENGTH_SHORT).show();
}
public class ProjectSummary {
public String id;
public String title;
public String owner_id;
public String description;
public String status;
public String start_time;
public String finish_time;
public String created;
public String modified;
public ProjectSummary() {
}