Java JSON解析

3

我已经尝试了3个小时,使用了许多API,但仍然无法使其工作。

我正在尝试解析

{
  "id": 8029390,
  "uid": "fdABNhroHsr0",
  "user": {
    "username": "Skrillex",
    "permalink": "skrillex"
  },
  "uri": "/skrillex/cat-rats",
  "duration": 305042,
  "token": "VgA2a",
  "name": "cat-rats",
  "title": "CAT RATS",
  "commentable": true,
  "revealComments": true,
  "commentUri": "/skrillex/cat-rats/comments/",
  "streamUrl": "http://media.soundcloud.com/stream/fdABNhroHsr0?stream_token=VgA2a",
  "waveformUrl": "http://w1.sndcdn.com/fdABNhroHsr0_m.png",
  "propertiesUri": "/skrillex/cat-rats/properties/",
  "statusUri": "/transcodings/fdABNhroHsr0",
  "replacingUid": null,
  "preprocessingReady": null
}

将其转换为一个数组/列表。 需要帮助吗?

这是列表中的一个条目吗? - Sean Adkinson
1
你一直在使用什么API或库?为什么它不起作用?[你尝试了什么?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) - G_H
gson、flexjson 等等。当涉及到 Java 时,我有点新手(更多的是 PHP 人 <.<)。 - Cakestep
请展示一下你目前为止尝试过的内容。 - RanRag
你在问题中展示的JSON是一个元素的有效JSON。它无法解析为ArrayList,而是会解析为一个元素。 - DwB
显示剩余2条评论
2个回答

6
我正在使用来自http://codehaus.org/的Jackson,迄今为止它已经满足了我所有的需求。
您不需要将json作为原始字符串处理在ArrayList中,而是作为POJO处理,以下是一个使用您的json子集的快速示例。
public class JacksonExample {
    public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
        String text = "{ \"id\": 8029390, \"user\": { \"username\": \"Skrillex\" } }";

        ObjectMapper mapper = new ObjectMapper();
        Pojo pojo = mapper.readValue(text, Pojo.class);

        System.out.println(pojo.id);
        System.out.println(pojo.user.username);
    }
}

class Pojo {
    public String id;
    public User user;

    public String getId() { return id; }
    public void setId(String id) { this.id = id; }

    public User getUser() { return user; }
    public void setUser(User user) { this.user = user; }

    public static class User {
        public String username;

        public String getUsername() { return username; }
        public void setUsername(String username) { this.username = username; }
    }
}

映射器创建一个填充了值的Pojo对象,然后您可以将该对象用于任何需要的地方。
以下是Jackson项目的一些链接:

http://jackson.codehaus.org/

http://wiki.fasterxml.com/JacksonInFiveMinutes

最新的all in one JAR在这里:

http://jackson.codehaus.org/1.9.1/jackson-all-1.9.1.jar


1
你应该尝试从SourceForge获取JavaJson... 你可以这样解析它:
JsonObject json = JsonObject.parse("...");
/*
 * or also JsonObject.parse(inputStream);
 */
then you can get fields this way:
String title = json.getString("title");
String username = json.get("user", "username").toString();

等等。这是链接:https://sourceforge.net/projects/javajson/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接