当前位置: 首页 > 知识库问答 >
问题:

ListString到带有GSON-TypeToken的string

陶博赡
2023-03-14

我试图在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);

所以,现在我想从我的DB中调用信息:

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);
     }

共有1个答案

谷梁德容
2023-03-14

您忘记了{},您的代码是:

Type type = new TypeToken<List<String>>().getType();

应该是:

Type type = new TypeToken<List<String>>(){}.getType();
 类似资料:
  • 我有这个代码: 我试过这个: 但不管用。这是一个例外:

  • 问题内容: 我有以下代码: 它将字符串转换为对象的。但是,现在我想让它具有在运行时定义的动态类型(而不仅仅是)。 所述的项目类型将与被定义反射。 我尝试了这个: 但这是行不通的。这是例外: 问题答案: 你提出的语法无效。下列 之所以无效,是因为你试图传递期望类型名称的方法调用。 下列 由于泛型(类型擦除)和反射的工作方式,因此无法实现。整个TypeToken黑客工作,因为以下 返回表示该类表示的实

  • 我有一个来自服务器的JSON字符串,我无法控制它 我通过编程使用jsonschema2pojo库生成了Java类 我正在使用GSON将JSON反序列化到我的Java对象中。 下面是JSON的一个例子。 “50”子类实际上只是18个类中的一个,它们的名称类似于一个数字 当jsonschema2pojo生成Java类时,可以理解它会在前面加一个下划线来创建类名(所以,_50)。 jsonschema2

  • 无法从自定义类获取泛型类型列表(Turns): 它说:

  • 我有一个类,它用这个函数反序列化泛型的ArrayList,就像这个线程的第一个答案中描述的:Java抽象类函数泛型类型 Eclipse要求我强制转换TypeToken,结果如下(sinde fromJson的函数需要一个类型,而不是一个TypeToken) 结果我得到了这个错误: 在gson用户手册中,他们告诉您这是调用函数的正确方式 我看不出我做错了什么(如果它是一个有效的答案,为什么我会得到这

  • 我已经编写了整型适配器,并用作注释来实现以下输出,但在gson库中编写的代码完全不允许使用注释配置进行空处理。 如果我取消注释1,2,4行和注释3行,那么我仍然没有实现我的愿望输出。 当我调试第189行的库代码(给定的屏幕截图)时,没有到达我的自定义适配器代码,因此空处理无法使用注释。有没有其他方法可以根据注释配置实现所需的输出? 期望输出: 猫科动物 - "" (用作注释并具有空值) phone