解析JSON并将其放在HashMap中

时间:2014-04-01 15:16:15

标签: java android json hashmap baseadapter

我有像这样的json模式

objects: [
    -{
        category: {
            id: 4,
            image: "category image url",
            title: "LIGHT"
        },
        create_time: "2014-03-20T17:57:23",
        file_url: "file url",
        id: 26,
        title: "Note",
        user: {
            avatar: "thumb url",
            id: 12,
            name: "user name"
        }
    }
    -{
        category: {
            id: 1,
            image: "category image url",
            title: "HEAVY"
        },
        create_time: "2014-03-20T17:57:23",
        file_url: "file url",
        id: 25,
        title: "Photo",
        user: {
            avatar: "thumb url",
            id: 2,
            name: "user name"
        }
    }
    .
    .
    .
]

当我解析这个块时,一切都没问题,直到我想将解析后的节点放到Hashmap中。 用于解析我将节点和对象定义为TAG,如

public static final String TAG_CAT_ID           = "id";
public static final String TAG_TONE_ID          = "id";
public static final String TAG_USER_ID          = "id";
public static final String TAG_CAT_TITLE        = "title";
public static final String TAG_TITLE            = "title";

然后我在For循环中解析它们并将结果保存为String,如下所示:

String cat_id                   = category.getString(TAG_CAT_ID);
String cat_title                = category.getString(TAG_CAT_TITLE);
String file_id                  = file.getString(TAG_TONE_ID);
String file_title               = file.getString(TAG_TITLE);
String user_id                  = user.getString(TAG_USER_ID);

我应该说....类别,文件和用户定义为JSON对象。 到现在为止,每个人都可以,我可以得到我想要的结果:

cat_id     -> 4
cat_title  -> LIGHT
file_id    -> 26
file_title -> Note
user_id    -> 12
----------------------
cat_id     -> 1
cat_title  -> HEAVY
file_id    -> 25
file_title -> Photo
user_id    -> 2

在本节之后我把这个结果放在HashMap中:

HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_CAT_ID, cat_id);
map.put(TAG_TONE_ID, tone_id);
map.put(TAG_USER_ID, user_id);
灾难发生了!!对于每个对象...哈希映射只返回一个id !!!!! cat_id,file_id,user_id .......的相同ID以及cat_title和file_title的一个标题!!!

我哪里错了?!

1 个答案:

答案 0 :(得分:1)

public static final String TAG_CAT_ID           = "id";
public static final String TAG_TONE_ID          = "id";
public static final String TAG_USER_ID          = "id";

这些ID是相同的,因此当您输入值时,您使用相同的键。这样你就可以覆盖&#34; id&#34;键值3次。

您的代码与此相当:

map.put("id", cat_id);
map.put("id", tone_id);
map.put("id", user_id);

您应该定义您的ID唯一。