【发布时间】:2018-08-05 08:05:39
【问题描述】:
我正在尝试在我的 Android 应用程序中解析一个 JSON 数组,其中包含一些 URL 以加载到我的 SQLite 数据库中,代码如下:
JSONArray pics = json.getJSONArray("bilder");
Gson gson = new Gson();
String obj = gson.toJson(pics);
String SQLiteDataBaseQuery = "INSERT INTO images_table (id,desc,imgurl) VALUES('"+i+"', '"+jr_desc+"', '"+obj+"');";
sqLiteDatabase.execSQL(SQLiteDataBaseQuery);
使用模拟器读取数据库我可以看到字符串 {"values":[URLS here]}。 GSON 在我的字符串列表前面写这个“值”正常吗?
所以,现在我想从我的数据库中调用信息:
Cursor cursor;
Array_links = new ArrayList<String>();
SQLiteGallery sqLiteHelper;
SQLiteDatabase sqLiteDatabase;
sqLiteHelper = new SQLiteGallery(this);
sqLiteDatabase = sqLiteHelper.getWritableDatabase();
cursor = sqLiteDatabase.rawQuery("SELECT * FROM "+SQLiteGallery.TAB_NAME+"", null);
cursor.moveToPosition(0);
Array_links.add(cursor.getString(cursor.getColumnIndex(SQLiteGallery.table_imgurl)));
Gson gson = new Gson();
Type type = new TypeToken<List<String>>().getType();
List<String> img_urls = gson.fromJson(Array_links,type);
for(String url : img_urls)
{
System.out.println(url);
}
Android Studio 给我以下错误:
TypeToken 在 'com.google.gson.reflect.TypeToken' 中具有受保护的访问权限
这是什么意思?我的代码错了吗?
谢谢
此处的正确代码:
Cursor cursor;
String urls;
SQLiteGallery sqLiteHelper;
SQLiteDatabase sqLiteDatabase;
sqLiteHelper = new SQLiteGallery(this);
sqLiteDatabase = sqLiteHelper.getWritableDatabase();
cursor = sqLiteDatabase.rawQuery("SELECT * FROM
"+SQLiteGallery.TAB_NAME+"", null);
cursor.moveToPosition(0);
urls =
cursor.getString(cursor.getColumnIndex(SQLiteGallery.table_imgurl));
Gson gson = new Gson();
Type type = new TypeToken<List<String>>(){}.getType();
List<String> img_urls = gson.fromJson(urls,type);
for(String url : img_urls)
{
System.out.println(url);
}
错误:无法启动活动 ComponentInfo{...}:com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:应为 BEGIN_ARRAY,但在第 1 行第 2 列路径 $ 处为 BEGIN_OBJECT
【问题讨论】: