2011-10-28 141 views
3

好吧,我一直在尝试3个小时。使用大量apis它仍然无法正常工作。Java json解析

我试图解析

{ 
    "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 
} 

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

+0

这是列表中的一个条目? –

+1

您使用过哪些API或库?为什么它不起作用? [你有什么尝试?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+0

gson,flexjson等等。对于java来说,我有点新手(更多的是php人物<。) – Cakestep

回答

6

我从http://codehaus.org/使用杰克逊,到目前为止它已经满足我所有的需求。

你并不完全把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

+0

不要提到它:D –

1

你应该尝试源自伪造的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/