使用gson解析json的不同类型的元素

时间:2016-06-01 20:48:33

标签: android json retrofit android-json gson

我有一个json对象,里面可以有一个属性,可以是数组或布尔值。所以我的问题是如何在解析它时解析这个json而没有问题?

以下是我所说的:

 {
        "offerId": "24",
        "image1": "1452678081_56961bc195cf8.jpg",
        "image2": "1452678081_56961bc195f38.jpg",
        "image3": "1452678081_56961bc196124.jpg",
        "featured": false,
        "hide_button": false,
        "categoryId": "1",
        "locations": [
            {
                "address": "Problemveien 13, 0313 Oslo",
                "long": "10.722052800000029",
                "latitude": "59.9409999"
            },
            {
                "address": "Akersgata 68, 0180 Oslo",
                "long": "10.744572199999993",
                "latitude": "59.9174608"
            },
            {
                "address": "Trimveien 4, 0372 Oslo",
                "long": "10.724201200000039",
                "latitude": "59.9466293"
            },
            {
                "address": "Sandakerveien 116, 0484 Oslo",
                "long": "10.769448300000022",
                "latitude": "59.9483484"
            },
            {
                "address": "Vulkan 15, 0178 Oslo",
                "long": "10.75169040000003",
                "latitude": "59.9223593"
            }
        ]
    }

这是对象在没有位置数组时的外观:

{
        "offerId": "25",
        "image1": "1452678113_56961be1d6774.jpg",
        "image2": "1452678113_56961be1d694f.jpg",
        "image3": "1452678113_56961be1d6ae0.jpg",
        "featured": false,
        "hide_button": false,
        "categoryId": "1",
        "locations": false
    }

再一次,我如何解析locations元素,因为它可以是布尔值或数组?有没有办法用google gson解析这个?

由于

2 个答案:

答案 0 :(得分:0)

我不明白你想要什么,但试试这个。 它可以解析任何json对象,但是你必须在获取位置时检查类型和强制转换。

class JavaBean {
    Object locations;
}

答案 1 :(得分:0)

创建如下的课程

{
   "start": "node --enable-fips app.js"
}

你将能够与Gson解析。

注意

  1. 我建议您重命名您的位置对象中的属性public class Location { String address; String long; // change the name of variable here and in json as well. String latitude; } public class MyClass { String offerId; String image1; String image2; String image3; boolean featured; boolean hide_button; String categoryId; List<Location> locations; } ,因为long是java中的关键字,而ide会抛出错误。

  2. 我还建议您将long数组设为空json数组而不是发送false,否则Gson会抛出异常。

  3. 希望这会对你有所帮助。