无法使用GSON库解析JSON文件

时间:2015-06-09 09:52:43

标签: java json gson

我无法解析此JSON文件。 任何建议表示赞赏。我已经从http://www.jsonschema2pojo.org/创建了POJO类我尝试了JSON去除溶液,但它对我来说没有用。

    {
  "error": "",
  "data": [
    {
      "view": "Viewpapger",
      "data": [
        {
          "view": "ImageView",
          "data": {
            "url": "random.jpg"
          },
          "properties": {
            "width": "fill_parent",
            "height": "500"
          }
        },
        {
          "view": "Textview",
          "data": {
            "text": "afvnjkafvf"
          },
          "properties": {
            "width": "fill_parent"
          }
        },
        {
          "view": "Textview",
          "data": {
            "text": "afvnjkafvf"
          },
          "properties": {
            "width": "fill_parent"
          }
        },
        {
          "view": "ImageView",
          "data": {
            "url": "random.jpg"
          },
          "properties": {
            "width": "fill_parent",
            "height": "500"
          }
        }
      ],
      "properties": {
        "width": "wrap_content",
        "height": "500"
      }
    },
    {
      "view": "Textview",
      "data": {
        "text": "afvnjkafvf"
      },
      "properties": {
        "width": "fill_parent"
      }
    },
    {
      "view": "ImageView",
      "data": {
        "url": "random.jpg"
      },
      "properties": {
        "width": "fill_parent",
        "height": "500"
      }
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

我认为这里的问题是JSON结构不对应于任何严格指定的模式,但看起来更像是一个特殊的键和值集合。例如,(似乎如此)取决于视图描述对象中view字段的值,data字段可以是

  • 包含其他视图描述的JSON数组(对于“Viewpager”)
  • 一个JSON对象,包含一个名为“url”的字符串(对于“ImageView”)
  • 一个JSON对象,包含一个名为“text”的字符串(对于“TextView”)

所以,基本上似乎data可以任何,而且你可以有一个任意深度的节点树,其中data可以是任何级别的任何级别树。 (例如,如果您始终可以确定顶级元素是包含一级子视图(如“ImageView”或“TextView”)的“Viewpager”,则可能会有所不同 - 如果您有任何类似的保证让我知道。)

在这种情况下,我认为你最好以其他一些不那么严格的方式解析JSON(可能使用org.json.JSONArrayorg.json.JSONObject),然后“手动”处理所有不同的情况。