首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >应为BEGIN_ARRAY,但在第1行第2列出现BEGIN_OBJECT,jsonSyntax错误

应为BEGIN_ARRAY,但在第1行第2列出现BEGIN_OBJECT,jsonSyntax错误
EN

Stack Overflow用户
提问于 2016-09-28 16:53:05
回答 2查看 86关注 0票数 0

我希望将Hashset对象保存到Sharedpreference中,然后检索该数据。我将数据存储到hashset中,并使用Gson将对象转换为json。实际上我将位图存储到Hashset中。我能够将Hashsetobject转换并保存为sharedpreference。在检索json并将其转换为Hashset对象时遇到问题。

代码语言:javascript
运行
复制
HashSet<images> img = new HashSet<images>(CIRCLES_LIMIT);

下面是将Object保存到Sharedpreference中的方法。

代码语言:javascript
运行
复制
  public void saveString() throws JSONException {

    Object spSquare = c.getStringDrawObjImages();


    SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getContext());
    SharedPreferences.Editor editor = sharedPrefs.edit();
    Gson gson = new Gson();


    String jsonSquare = gson.toJson(spSquare)
    editor.putString("kEySquare", jsonSquare);
    editor.commit();

}

方法来检索该对象。

代码语言:javascript
运行
复制
   public void openString() {
    SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getContext());
    Gson gson = new Gson();

    String jsonSquare=sharedPrefs.getString("kEySquare",null);



  Type typeSquare = new TypeToken<HashSet<images>>(){}.getType();
    HashSet<images> arrayListSquare = gson.fromJson(jsonSquare,typeSquare);`//getting Exception here jsonSyntax Error`


    if (arrayListSquare != null) {
        img = arrayListSquare;
    }
}
EN

回答 2

Stack Overflow用户

发布于 2016-09-28 17:03:28

根据您的注释,您的json如下所示的格式不正确,因此Gson可以在您收到string中的circle属性时对其进行解析,而不是作为json

代码语言:javascript
运行
复制
{
  "img": "[Circle[218.69626, 475.58936, 0,android.graphics.Bitmap@42e13c70,0.0,0.0,0.0,0.0,0.0,0.0,]‌​, Circle[186.74065, 670.43713, 0,android.graphics.Bitmap@42e13c70,0.0,0.0,0.0,0.0,0.0,0.0,]‌​]"
}

因此,您的Json将作为仅具有img属性的对象接收。

并且您正在将其解析为数组。这是个错误。因此,请联系您的后端开发人员并相应地更改json结构。

票数 1
EN

Stack Overflow用户

发布于 2016-09-28 17:08:22

您序列化了一个对象,并希望将其反序列化为HashSet。这就是问题所在。

代码语言:javascript
运行
复制
Object spSquare = c.getStringDrawObjImages();

spSquare的类型是什么?假设它是'Foo.class',你应该像这样反序列化它:

代码语言:javascript
运行
复制
Foo foo = gson.fromJson(jsonString, Foo.class);

'foo.img‘应该是你的HashSet

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39742495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档