【问题标题】:Realm wrong JSON parsing领域错误的 JSON 解析
【发布时间】:2015-09-10 03:25:12
【问题描述】:

我通过createObjectFromJson(Class, InputStream)解析json,然后保存到数据库中

一切都很完美,直到我改变

String name;

LocalizedString name;

还有我的 json 数据

  {
      "name": "Introduction",

  {
     "name": {
       "en": "Introduction",
       "da": "Introduktion",
       "de": "Einführung",
       "ko": "소개"
     },

LocalizedString 现在在哪里

public class LocalizedString
          extends RealmObject {

   private String en;
   private String da;
   private String de;
   private String ko;

   //   +getters and setters

   }

现在解析后的所有字符串都等于null(即en、da、de、ko) 解析过程中没有显示错误

最后一件奇怪的事:颜色类也以同样的方式解析

  "color": {
  "red": 255,
  "green": 199,
  "blue": 60
}

和类:

public class Color
        extends RealmObject{

    private int red;
    private int green;
    private int blue;

    //+getters and setters
}

所有的json结构如下:

{
  "name": {
    "en": "Active Aging",
    "da": "Aktiv aging",
    "de": "Aktiv im Alter",
    "ko": "액티브 에이징"
  },
  "programs": [
    //some other data
  ],
  "color": {
    "red": 255,
    "green": 199,
    "blue": 60
  }
}

提前感谢您的帮助

【问题讨论】:

  • 你能告诉我们你实际调用createObjectFromJson的代码吗?
  • @DerekFung,我解析 json 的代码没有变化,只有模型。它也成功地解析了对象的所有其他部分,所以我认为它毫无意义

标签: java android json parsing realm


【解决方案1】:

从你提供的情况来看,你使用了createObjectFromJson(Class, InputStream),这意味着没有提供encoding关于如何读取InputStream。

所以我怀疑原因是由于编码。您可以通过将json中的所有字符仅更改为ASCII来验证它,看看它是否可以成功解析。

如果这是问题的原因,您可能需要将 InputStream 读取为具有正确编码(UTF-8?)的字符串,并改用createObjectFromJson(Class, String)

【讨论】:

  • 我尝试将所有值替换为英语,即我创建了单独的文件,其中 en/da/de/ko 的所有值都是“test”,但它不起作用相同的结果,所有字符串均为空
  • 即使在这种情况下,也可能会成功读取 en 值,不是吗?但是“en”值也到处都是 null
  • 很难说,要看具体实现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多