2014-02-25 85 views
1

我想使用GSON解析一些JSON数据到Java,但由于格式化的方式,我无法这样做。我查了很多,但没有找到任何信息帮助我解决这个问题。我没有太多的JSON经验,特别是在解析Java时。我将不胜感激任何帮助。解析Java中的JSON url

JSON网址: http://xpaw.ru/mcstatus/status.json

编辑:

我把您的意见如何使用杰克逊,并通过一些导游去,并试图使吧,我的继承人代码:

主类:http://pastebin.com/XRcpkAuP

UptimeCheck Class:pastebin/f2UanvhY(Sorry,I could not post more than 2 links:/)

由于某种原因,它似乎无法解析链接。有人可以帮我吗? 谢谢

+2

你是什么意思“因为它的方式格式化”是什么意思?最终,它为什么失败? –

+1

可以分享coed和确切的问题 –

+0

http://jsonlint.com/表明这是有效的json。 – Nicole

回答

1

我个人推荐使用杰克逊JSON从Java转换成/。 Jackson是一款高性能JSON处理器Java库。

下面的片段将给这个图书馆一个基本的想法。

//1. Convert JSON to Java object 
ObjectMapper mapper = new ObjectMapper(); 
User user = mapper.readValue(new File("c:\\report_data.json"), ReportData.class); 

//2. Convert Java object to JSON format 
ObjectMapper mapper = new ObjectMapper(); 
mapper.writeValue(new File("c:\\report_data.json"), reportData); 

两个writeValue()readValue()有许多重载方法来支持不同类型的InputStreamOutputStream

供大家参考

例子:http://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/

Shishir

0

我不知道gson,但你的JSON字符串是有效的。你可以使用下面的代码:

这是简单的代码来做到这一点,我避免了所有的检查,但这是主要想法。

public String parse(String jsonLine) { 
    JsonElement jelement = new JsonParser().parse(jsonLine); 
    JsonObject jobject = jelement.getAsJsonObject(); 
    jobject = jobject.getAsJsonObject("data"); 
    JsonArray jarray = jobject.getAsJsonArray("translations"); 
    jobject = jarray.get(0).getAsJsonObject(); 
    String result = jobject.get("translatedText").toString(); 
    return result; 
} 

为了让使用更通用的 - 你会发现[javadoc中] [1]这是很清楚的和有益的。

0

我在另一篇文章读它..使用GSON似乎也不错....

最简单的办法通常是创建匹配的对象的层次结构,就像这样:

这是一个例子

public class Wrapper { 
    public Data data; 
} 
static class Data { 
    public Translation[] translations; 
} 
static class Translation { 
    public String translatedText; 
} 

然后使用GSON进行绑定,通过字段遍历对象层次结构。添加getter和setter对于基本数据容器是没有意义的。

因此,像:

Wrapper value = GSON.fromJSON(jsonString, Wrapper.class); 
String text = value.data.translations[0].translatedText; 
+2

你确实意识到Stackoverflow不是具有对话线程的论坛;几乎没有理由发布一个全新的答案(几乎没有一分钟后,你可以简单地编辑你的原始答案与更新的信息。 –

+0

@PaulRichter问题不一定只有一个答案。如果我的两个答案都是类似的,我可以编辑,但这里是1个GSON,另一个没有GSON。所以我不认为我应该编辑,更重要的是为什么堆栈溢出会让用户发布超过1个问题的答案? –

+0

现在它是一个有争议的问题,因为我看到你删除了另一个答案。主要问题是这两个答案都很一般。虽然他们没有“错误”(你试图提供帮助),但他们在OP问题上也没有“正确”,因为我们根本没有足够的信息来给出具体和简明的答案。最终,双重答案本身是可以避免的,除非这两个职位显然是不同的,即使如此,也不会鼓励,因为通常情况下这些情况很好地表明问题本身可能过于笼统(可能需要关闭)。 –