Tag: gson

JodaTime LocalDate / LocalTime不使用自定义JSON Serializer类进行解析

我有一个名为ReportEvent的对象,它接受来自JodaTime API /框架的JodaTime和LocalDate 。 此ReportEvent可以通过谷歌的GSON转换API写入JSON 。 但是,当反序列化JodaTime partial导致问题时。 Logcat错误报告: 10-16 13:23:01.812: E/AndroidRuntime(8884): FATAL EXCEPTION: main 10-16 13:23:01.812: E/AndroidRuntime(8884): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nanospark.cnc/com.nanospark.cnc.MainActivity}: java.lang.IllegalArgumentException: Invalid format: “{“iChronology”:{“iBase”:{“iMinDa…” 10-16 13:23:01.812: E/AndroidRuntime(8884): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 10-16 13:23:01.812: E/AndroidRuntime(8884): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 10-16 13:23:01.812: E/AndroidRuntime(8884): at android.app.ActivityThread.access$600(ActivityThread.java:141) 10-16 13:23:01.812: E/AndroidRuntime(8884): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 10-16 13:23:01.812: E/AndroidRuntime(8884): at android.os.Handler.dispatchMessage(Handler.java:99) 10-16 13:23:01.812: […]

如何比较JSON文档并返回与Jackson或Gson的差异?

我正在使用spring-boot来开发后端服务。 有一种方案可以比较2-beans(一个是DB对象,另一个是客户端请求的对象)并返回“new element”,“modified element”,如果没有更改,则返回false。 2豆的格式如下 “sampleList”:{ “timeStamp”:”Thu, 21 Jun 2018 07:57:00 +0000″, “id”:”5b19441ac9e77c000189b991″, “sampleListTypeId”:”type001″, “friendlyName”:”sample”, “contacts”:[ { “id”:”5b05329cc9e77c000189b950″, “priorityOrder”:1, “name”:”sample1″, “relation”:”Friend”, “sampleInfo”:{ “countryCode”:”91″, “numberType”:”MOBILE”, “numberRegion”:”IN” } }, { “id”:”5b05329cc9e77c000189b950″, “priorityOrder”:1, “name”:”sample2″, “relation”:”Friend”, “sampleInfo”:{ “countryCode”:”91″, “numberType”:”MOBILE”, “numberRegion”:”IN” } } ] } 我在java中浏览了关于这种情况的bean比较的网络,但我找不到任何更简单的解决方案,但找到了一些很酷的JSON解决方案。 我可以看到GSON的一些解决方案,但它不会返回客户端对象包含“新元素”和“更改元素”。 有没有办法在JSON或JAVA中返回更新和修改过的元素? 你的帮助应该是值得的。 即使是暗示对我来说也是一个很好的开始。

如何在java中使用Gson读取Json

我需要在Java中使用Gson库读取Json文件。 首先,我不明白Json文件是什么,我有以下内容:(抱歉缺少空格,这就是它的粘贴方式) { “initialStorage”: [ {shoeType: “red-boots”, amount: 10}, {shoeType: “green-flip-flops”, amount: 7} ], services: { time: { speed: 1000, duration: 24 }, manager: { discountSchedule: [ {shoeType: “red-boots”, amount: 1, tick: 3}, {shoeType: “green-flip-flops”, amount: 3, tick:10} ] }, factories: 3, sellers: 2, customers: [ { name: “Bruria”, wishList: [“green-flip-flops”], purchaseSchedule: [ {shoeType: “red-boots”, […]

使用Gson 2.3.1反序列化包含不在Java中工作的接口的Json String

我试图反序列化包含接口类型的接口和hashmaps的json字符串以及使用Gson将包含接口类型的列表放入java对象中。 但我得到了 java.lang.RuntimeException:无法为com.abc.Dummy接口调用no-args构造函数。 使用Gson为此类型注册InstanceCreator可以解决此问题。 我试图通过实例化构造函数来为实例创建者注册类型适配器,以实现具有虚拟值的类,但是虚拟值不会被反序列化的值覆盖? Dummy是接口,SubClassDummy是实现类。 public class DummyInstanceCreator implements InstanceCreator{ @Override public SubClassDummy createInstance(Type type) { return new SubClassDummy(“”, 2.5, “abc”); } } String data = // some json string with interfaces and List, hashmap gsonBuilder.registerTypeAdapter(Dummy.class, new DummyInstanceCreator()); SubClassDummy context = gson.fromJson(data, SubClassDummy.class); 任何人都可以帮助解决这个问题吗? 我无法修改我试图反序列化的java对象。 它是第三方课程 。 因此无法添加任何注释或对该类进行任何修改。 如何让gson用反序列化值覆盖虚拟值? 我甚至无法对java对象如何序列化为json字符串进行任何更改。 我只是将json字符串用于将其反序列化为特定的java对象。

循环嵌套ArrayList以使用gson显示来自JSON的值

问:我的json有嵌套元素forms的值,正如你在下面看到的,我在数组中有来自服务器的值,而且里面有第二个数组。 现在我使用gson来解析这个值,每一件事都在起作用 – 直到”orderDetailList”但是当我尝试循环抛出“subItemPart”时,我无法检索subItemPart对象的值。 源代码: 在文件myFile.json中输入JSON字符串(使用JSONLintvalidation:有效的JSON) { “customerId”: “CUST01”, “orderId”: “101010”, “orderTotal”: 99.99, “orderDetailList”: [ { “lineId”: “1”, “itemNumber”: “ABC”, “quantity”: 9, “price”: 10.0, “subItemPart”:[{“itemName”:”RAM”, “quantity”: 5}, {“itemName”:”LED”, “quantity”: 3}] }, { “lineId”: “2”, “itemNumber”: “XYZ”, “quantity”: 1, “price”: 9.99 , “subItemPart”:[{“itemName”:”RAM”, “quantity”: 5}, {“itemName”:”LED”, “quantity”: 3}] } ] } 用于将JSON字符串转换为Java对象的Java源代码 package com.as400samplecode; import java.io.BufferedReader; […]

无法将JsonNull转换为JsonObject

我想将一个primitve属性从一个JsonObject复制到另一个 JsonObject propertyToBeCopied = source.getAsJsonObject(propertyName); 但我总是遇到这个例外: com.google.gson.JsonNull cannot be cast to com.google.gson.JsonObject 根据文档,应该可以进行演员表,或者我错了吗?

ProGuard混淆,java,Google Gson和通用集合 – 如何保留成员?

我有一个这样的课: public class MyClass { private Queue myQueue; } 我的问题是我无法让ProGuard在使用Google Gson序列化到json之后保留myQueue。 会发的是会员名称“myQueue”被序列化为“a”。 显然,反序列化会破坏。 以下是我尝试过的一些ProGuard配置。 -keepclassmembers class com.my.package.MyClass { #private java.util.Queue myQueue; #private java.util.Queue myQueue; private java.* myQueue; } 同 private java.util.Queue myQueue; …… ProGuard抱怨说这堂课不详。 消息是: 注意:配置引用未知类java.util.Queue’ 运用 private java.* myQueue; ….摆脱ProGuard警告,但是,正如我所说,成员myQueue没有保存在json输出中。 它被序列化为“a”。 其余的相关ProGuard配置如下: -renamesourcefileattribute SourceFile -keepattributes SourceFile,LineNumberTable -keepattributes *Annotation* #gson -keepattributes Signature -adaptresourcefilenames **.properties,**.gif,**.jpg,**.png,**.wav -adaptresourcefilecontents […]

Gson使用存根序列化循环引用

我正在尝试实现一些简单的Json序列化function,但我很难应对Gson的大量复杂性。 所以基本上我有一堆实体类,它们通过大量的循环引用相互引用。 要将此结构序列化为JSON,我想跟踪已经序列化的对象。 Entity类都实现了一个名为Identified的接口,它有一个方法String getId()给出一个全局唯一的id。 因此,在对一个根元素进行序列化时,我希望将所有遇到的ID存储在一个Set并根据该集决定是否完全序列化对象或将该对象序列化为存根 “something”: { “__stub”: “true”, “id”: “…” } 在我看来,这不应该是一项艰巨的任务,但我无法将某些东西放在一起。 使用自定义JsonSerializer我不能以默认方式序列化一个对象(不能被序列化为存根)。 使用TypeAdapterFactory ,我无法访问实际对象。 所以,任何有关如何实现这一目标的帮助都会非常好! 最好的祝福

Gson:如何处理可能具有不同类型的字段?

我正在尝试使用Gson反序列化响应。 数据由可以嵌套到任意深度的节点列表组成。 json看起来像这样: { “type”: “node”, “children”: [ { “id”: “abc123”, “name”: “Name 1”, “subdata”: { “type”: “node”, “children”: [ { “id”: “def456”, “name”: “Name 2” } ] } } ] } 现在,没有任何自定义类型适配器,我可以使用以下类: public class Data { private String type; private List nodes; } public class Node { private String id; private String name; private […]

在applet中使用GSON库时的reflection权限问题

我正在编写一个进行JSON-RPC调用的Applet。 我正在使用Google JSON库(GSON)将响应JSON转换为类。 Thsi似乎工作得很好但是当我在我的Applet中使用这个代码时,我遇到了一个java.lang.reflect.reflectpermission 。 从我在SO上看到的这个post来看,似乎由于GSON使用Reflection,我不能在Applet中使用它,除非我明确修改了安全策略。 我怎么能绕过这个? 我在我的应用程序中创建了一堆类,并使用Gson.fromJson方法将其Gson.fromJson转换为类。 有没有办法实现相同的function,而无需重写我的一半代码。 (在Java中处理JSON的复杂性似乎属于它自己的联盟​​!) 先谢谢你们。