为了账号安全,请及时绑定邮箱和手机立即绑定

使用gsonforJava的JSON解析

使用gsonforJava的JSON解析

智慧大石 2019-06-28 10:39:40
使用gsonforJava的JSON解析我想解析JSON中的数据,它的类型是String..我在用谷歌gson.我有:jsonLine = "{  "data": {   "translations": [    {     "translatedText": "Hello world"    }   ]  }}";我的课是:public class JsonParsing{    public void parse(String jsonLine) {       // there I would like to get String "Hello world"    }}
查看完整描述

3 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

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

 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").getAsString();
    return result;}


查看完整回答
反对 回复 2019-06-28
?
千巷猫影

TA贡献1829条经验 获得超7个赞

在我的第一个gson应用程序中,我避免使用其他类来捕获值,主要是因为我在配置事项上使用json。

尽管缺乏信息(甚至是gson页面),但我发现并使用了以下内容:

Map jsonJavaRootObject = new Gson().fromJson("{/*whatever your mega complex object*/}", Map.class)

每当gson看到一个{},它就创建一个Map(实际上是一个gsonStringMap)

每次gson看到一个“,它都会创建一个字符串

每当gson看到一个数字,它就会创建一个双倍。

每次gson看到一个[],它都会创建一个ArrayList

你可以利用这些事实(加在一起)对你有利。

最后,这是使事情发生的代码

        Map<String, Object> javaRootMapObject = new Gson().fromJson(jsonLine, Map.class);

    System.out.println(
        (
            (Map)
            (
                (List)
                (
                    (Map)
                    (
                        javaRootMapObject.get("data")
                    )
                 ).get("translations")
            ).get(0)
        ).get("translatedText")
    );


查看完整回答
反对 回复 2019-06-28
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

最简单的方法通常是创建匹配的对象层次结构,如下所示:

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;


查看完整回答
反对 回复 2019-06-28
  • 3 回答
  • 0 关注
  • 417 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信