是否有可能在gson中编写一个json反序列化器,首先调用默认行为,然后我可以对我的对象做一些后期处理。 例如: public class FooDeserializer implements JsonDeserializer<Foo> { public Foo deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { Foo foo = context.deserialize(json, typeOfT);//Standard deserialization call????? foo.doSomething(); return foo(); } } 我正在使用GSON 1.3(我不能使用任何其他版本,因为我只能使用公司存储库中的版本) 谢谢
一个人应该如何处理Gson和需要与可选字段? 由于所有字段都是可选的,所以我不能根据响应json是否包含某个键来真正地失败我的networking请求, Gson将简单地将其parsing为null。 方法我正在使用gson.fromJson(json, mClassOfT); 例如,如果我有以下json: {"user_id":128591, "user_name":"TestUser"} 而我的class级: public class User { @SerializedName("user_id") private String mId; @SerializedName("user_name") private String mName; public String getId() { return mId; } public void setId(String id) { mId = id; } public String getName() { return mName; } public void setName(String name) { mName = name; } } 如果json不包含user_id或user_name键,是否有任何选项可以让Gson失败? […]
我想通过与Gson大包装JsonObject迭代。 我的最终目标是获得内部"unterfeld"对象中所有现有的三位数字code整数的ArrayList ,但是一旦我可以遍历外部对象的属性,这将是没有问题的。 { "something1": { "bezeichnung": "something1", "unterfeld": [ { "bezeichnung": "bla1", "unterregionen": [ ], "code": 111 }, { "bezeichnung": "bla2", "unterregionen": [ ], "code": 222 } ], "code": 3 }, "something2": { "bezeichnung": "something2", "unterfeld": [ { "bezeichnung": "bla3", "unterregionen": [ ], "code": 333 } ], "code": 6 }, "something3": { "bezeichnung": "something3", […]
在GSON中获取你所做的对象列表 Gson gson = new Gson(); Type token = new TypeToken<List<MyType>>(){}.getType(); return gson.fromJson(json, token); 它工作的很好,但我想走得更远,并有MyType参数化,所以我可以有一个共同的function来parsing与此代码的对象的列表 // the common function public <T> List<T> fromJSonList(String json, Class<T> type) { Gson gson = new Gson(); Type collectionType = new TypeToken<List<T>>(){}.getType(); return gson.fromJson(json, collectionType); } // the call List<MyType> myTypes = parser.fromJSonList(jsonString, MyType.class); 可悲的是返回一个StringMaps数组,而不是types。 T被解释为另一种generics,而不是我的types。 任何解决方法?
目前我正在使用webView前端处理本机android应用程序。 我有这样的东西: public class dataObject { int a; String b; } 在活动中, 我做了一个dataObject的数组,比如dataObject x [5]; 现在我想在callback函数中将这5个dataObject作为JSON传递给我的javascript webView接口。 我通过互联网看,似乎大多数教程谈论如何从fromJson()转换。 对于toJson()没有太多的了解。 我发现一个教我dataObject.toJson() ,将工作。 但是,我怎样才能通过所有5个数据对象?
我试图parsingJSONstring“{'test':'100.00'}”,并得到GSON库的值:100.00。 我的代码如下所示: String myJSONString = "{'test': '100.00'}"; JsonObject jobj = new Gson().fromJson(myJSONString, JsonObject.class); String result = jobj.get("test").toString(); System.out.println(result); 我的结果是这样的:“100.00”,但我只需要100.00没有引号。 这怎么能成真?
我想知道如何将Boon或Jacksonparsing器添加到Android Studio中使用Gradle的Android项目? 我发现如何用GSON做到这一点,但是用Boon或者Jackson找不到任何东西。
从Gson项目的这个链接似乎表明,我将不得不做类似下面的序列化一个types的地图到JSON: public static class NumberTypeAdapter implements JsonSerializer<Number>, JsonDeserializer<Number>, InstanceCreator<Number> { public JsonElement serialize(Number src, Type typeOfSrc, JsonSerializationContext context) { return new JsonPrimitive(src); } public Number deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { JsonPrimitive jsonPrimitive = json.getAsJsonPrimitive(); if (jsonPrimitive.isNumber()) { return jsonPrimitive.getAsNumber(); } else { throw new IllegalStateException("Expected a number field, but was " […]
我有一个A类,有一些私人领域和相同的类延伸另一个B类,也有一些私人领域,在A级。 public class A extends B { private BigDecimal netAmountTcy; private BigDecimal netAmountPcy; private BigDecimal priceTo; private String segment; private BigDecimal taxAmountTcy; private BigDecimal taxAmountPcy; private BigDecimal tradeFeesTcy; private BigDecimal tradeFeesPcy; // getter and setter for the above fields } Bclass有Aclass的私人小class 现在当我尝试从类A创buildJSONstring我得到以下exception: class com.hexgen.ro.request.A declares multiple JSON fields named netAmountPcy 如何解决这个问题? 由于他们是私人领域应该不会有任何问题,当我创buildjsonstring,但我不知道。 我创buildjsonstring,如下所示: Gson gson […]
我已经将这些依赖包括在我的项目中: 编译'com.squareup.retrofit:翻新:2.0.0-beta2' 编译'com.squareup.retrofit:converter-gson:2.0.0-beta1' 我有一个课程,我将通过改进来访问我的api: public static <S> S createService(Class<S> serviceClass, String baseUrl) { Retrofit builder = new Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create()) .build(); RestAdapter adapter = builder.build();*/ return builder.create(serviceClass); } 而现在,它给了我这个编译时错误: 错误:(24,17)错误:类Builder中的方法addConverterFactory不能应用于给定的types; 必需:发现工厂:GsonConverterFactory原因:实际参数GsonConverterFactory不能通过方法调用转换转换为Factory 我该如何解决这个问题? 我跟着文档。 哪里不对?