【问题标题】:Java json parseJava json 解析
【发布时间】:2011-10-28 19:33:55
【问题描述】:

嗯,我已经尝试了 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
}

到一个数组/列表中。 有什么帮助吗?

【问题讨论】:

  • 这是列表中的一项吗?
  • 您使用过哪些 API 或库?为什么它不起作用? What have you tried?
  • gson、flexjson 等等。说到java,我有点新手(更多的是一个php人<.>
  • 根据 python 的 json 模块,这是有效的 JSON。你的意思是它不会解析,还是内容不符合你的要求?
  • 好吧,gson 只是说它不能接受它。所以是的,我有点不知道出了什么问题。

标签: java json parsing


【解决方案1】:

我正在使用来自 http://codehaus.org/ 的 Jackson,到目前为止它已经满足了我的所有需求。

您并不完全将 json 作为数组列表中的原始字符串处理,而是将其作为 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 对象。然后您可以将该对象用于您需要的任何东西。

以下是杰克逊项目的几个链接:

http://jackson.codehaus.org/

http://wiki.fasterxml.com/JacksonInFiveMinutes

最新的多合一 JAR 在这里:

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

【讨论】:

    【解决方案2】:

    你应该从源代码伪造尝试 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/

    【讨论】:

      猜你喜欢
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      • 2019-06-09
      • 2017-03-18
      • 2013-01-24
      相关资源
      最近更新 更多