使用gsonforJava的JSON解析

使用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"

   }}


智慧大石
浏览 418回答 3
3回答

ABOUTYOU

这是简单的代码,我避免了所有的检查,但这是主要的想法。 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;}

千巷猫影

在我的第一个gson应用程序中,我避免使用其他类来捕获值,主要是因为我在配置事项上使用json。尽管缺乏信息(甚至是gson页面),但我发现并使用了以下内容:从Map&nbsp;jsonJavaRootObject&nbsp;=&nbsp;new&nbsp;Gson().fromJson("{/*whatever&nbsp;your&nbsp;mega&nbsp;complex&nbsp;object*/}",&nbsp;Map.class)每当gson看到一个{},它就创建一个Map(实际上是一个gsonStringMap)每次gson看到一个“,它都会创建一个字符串每当gson看到一个数字,它就会创建一个双倍。每次gson看到一个[],它都会创建一个ArrayList你可以利用这些事实(加在一起)对你有利。最后,这是使事情发生的代码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map<String,&nbsp;Object>&nbsp;javaRootMapObject&nbsp;=&nbsp;new&nbsp;Gson().fromJson(jsonLine,&nbsp;Map.class); &nbsp;&nbsp;&nbsp;&nbsp;System.out.println( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Map) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(List) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Map) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;javaRootMapObject.get("data") &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;).get("translations") &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;).get(0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;).get("translatedText") &nbsp;&nbsp;&nbsp;&nbsp;);

小怪兽爱吃肉

最简单的方法通常是创建匹配的对象层次结构,如下所示:public&nbsp;class&nbsp;Wrapper&nbsp;{ &nbsp;&nbsp;&nbsp;public&nbsp;Data&nbsp;data;}static&nbsp;class&nbsp;Data&nbsp;{ &nbsp;&nbsp;&nbsp;public&nbsp;Translation[]&nbsp;translations;}static&nbsp;class&nbsp;Translation&nbsp;{ &nbsp;&nbsp;&nbsp;public&nbsp;String&nbsp;translatedText;}然后使用gson绑定,通过字段遍历对象层次结构。添加getter和setter对于基本数据容器来说是没有意义的。所以就像:Wrapper&nbsp;value&nbsp;=&nbsp;GSON.fromJSON(jsonString,&nbsp;Wrapper.class);String&nbsp;text&nbsp;=&nbsp;value.data.translations[0].translatedText;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java