Articles of gson

如何将JSONObject转换为类对象?

我需要使用gson库将JSONObject转换为Location对象,用于我的android项目。 我不知道该怎么做。 谁能帮我这个。 提前致谢。 我有一个类似的代码 JSONArray input = new JSONArray(extras.getString(“loc_json”)); 我想将从JSONArray中获取的JSONObject转换为Location类对象。 我只是想知道是否有一个函数可以直接执行它。 如果我以错误的方式提出问题,请原谅我。 由于我没有直接function,我这样做了。 loc_temp = (Location) gson.fromJson(input.getJSONObject(i).toString(), Location.class);; 抱歉这个愚蠢的问题。

在GSON反序列化后完成对象构造

我已经成功开始使用GSON来序列化和反序列化Android应用程序中的对象层次结构。 一些被序列化的对象具有我必须标记为transient成员(或者使用替代的GSON注释以防止它们被序列化),因为它们是对我不想作为输出JSON字符串的一部分进行序列化的对象的引用。 这些引用是指必须通过其他方式单独构造的对象。 一旦将结构反序列化为Java对象,在某些时候我需要填写这些引用。 我可以通过使用一系列setXXX()types方法轻松完成此操作,但在此之前,这些对象处于不完整状态。 因此,我想知道是否有更强大的方法来解决这个问题。 到目前为止我想到的方式: 如果对象处于不完整状态,则抛出RuntimeException (或更合适的东西); 也就是说,如果在没有调用某些初始化方法时要求他们做一些工作。 将可序列化的位分离为单独的数据模型对象。 换句话说,拿出无法序列化的东西。 在GSON反序列化之后,使用组合中的这些数据对象构建我的“真实”对象。 这似乎在某种程度上打败了使用GSON的便利性。 为GSON编写自定义反序列化器来处理这些对象的特殊创建。

android:gson性能

我试图使用gson在android模拟器上进行我的对象映射。 处理大约208 kb的json数据时,它的速度非常慢。 我的json中没有任何层次结构。 完成对象映射后,我可以看到gson创建了大约500条记录。 在android模拟器上花了超过3分钟来映射输入json。 我注释了我的实体,包括字符串和几个浮点数。 我错过了什么? 任何想法,最佳实践都会有很大帮助。 有没有快速对象映射json数据的方法? URL myURL = new URL(url); /* Open a connection to that URL. */ URLConnection ucon = myURL.openConnection(); /* * Define InputStreams to read from the URLConnection. */ InputStream is = ucon.getInputStream(); InputStreamReader reader = new InputStreamReader(is); long tickCount = System.currentTimeMillis(); Policy[] policies = new Gson().fromJson(reader, […]

在Android中使用GSON来解析复杂的JSON对象

我对Java编程比较陌生,需要跨线程解析复杂的JSON对象。 我过去一直在阅读有关GSON的文档,并且没有太多运气能够完全解析这种types的结构: { ‘Events’ : [{ ‘name’ : ‘exp’, ‘date’ : ’10-10-2010′, ‘tags’ : [“tag 1”, “tag2”, “tag3”] },…more events…], ‘Contacts’ : [{ ‘name’ : ‘John Smith’, ‘date’ : ’10-10-2010′, ‘tags’ : [“tag 1”, “tag2”, “tag3”] },…more contacts…], } 我已经能够让它与这个问题类似地工作,但无法弄清楚如何让额外的arrays级别工作。

带有不同对象types的数组的Gson Parse Json

如何使用Gson解析此JSON? 我有一个包含多个对象types的数组,我不知道为了保存这个结构我需要创建什么样的对象。 我无法更改json消息(我不控制服务器)。 function(types)的唯一类是这个 public class Response { private List tr; private int results; (…) } JSON消息 (注意具有多个对象types的数组。) { “tr”: [ { “a”: { “userId”: “112” } }, { “b”: { “userId”: “123”, “address”:”street dummy” } }, { “a”: { “userId”: “154” } } ], “results”:3 }

google gson将LinkedTreeMap类强制转换为myclass

我以前曾经问过这个问题。 由于我在java和android方面的新手技巧。 一个多星期以来,我无法解决这个问题。 我的一个朋友和我正在开发一个Android项目是有这样的事情。 这件事最奇怪的部分是,它发生在我从谷歌游戏商店下载和测试时。 不是从本地android studio安装或调试模式。 这可能是什么问题,或者这个完全错误的返回列表? 我的朋友说服这段代码正确返回但是从Play商店安装它始终是一个错误。 请建议我在哪里继续挖掘? @Override public void promiseMethod(JSONObject object) { if (object != null) { if (object.has(DO_SERVICES)) { vehicleDetails = new ArrayList (1); List vehicleNoList = new ArrayList (1); List serviceList = new ArrayList (1); try { Gson gson = new Gson(); JSONObject jsonObj = new JSONObject(object.get(DO_SERVICES) .toString()); servDto […]

使用Gson时会出现奇怪的“nameValuePairs”键

我正在尝试从其字段重建一个Object (我将字段作为JSONObject),如下所示: JSONObject jObj = new JSONObject(); JSONObject jObj1 = new JSONObject(); JSONObject jObj2 = new JSONObject(); JSONObject jObj21 = new JSONObject(); JSONObject jObj22 = new JSONObject(); jObj1.put(“jObj11”, “value11”); jObj1.put(“jObj12”, “value12”); jObj21.put(“jObj211”, “value211”); // level 2 jObj21.put(“jObj212”, “value212”); jObj21.put(“jObj213”, “value213”); jObj22.put(“jObj221”, “value221”); jObj22.put(“jObj222”, “value222”); jObj22.put(“jObj223”, “value223”); jObj2.put(“jObj21”, jObj21); // level 1 jObj2.put(“jObj22”, jObj22); jObj.put(“jObj1”, jObj1); […]

如何在使用gson转换器时将改装用作单件?

从@jake Wharton的回答中,您应该只调用一次restAdapter.create,并在每次需要交互时重复使用相同的MyTaskService实例。 我不能强调这一点。 您可以使用常规单例模式,以确保在任何地方只使用这些对象的单个实例。 dependency injection框架也可用于管理这些实例,但如果您尚未使用它,则会有点矫枉过正。 这是我的代码 public class MusicApi { private static final String API_URL = “https://itunes.apple.com”; private static MusicApiInterface sMusicApiInterface; public static MusicApiInterface getApi() { if (sMusicApiInterface == null) { sMusicApiInterface = null; RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint(API_URL) .build(); sMusicApiInterface = restAdapter.create(MusicApiInterface.class); } return sMusicApiInterface; } public interface MusicApiInterface { @GET(“/search?entity=musicVideo”) NetworkResponse […]

使用Retrofit API的MalformedJsonException?

我需要发送一个json到我的webservice,json是: { “Sala”: { “usuario”: “%@”, “adversario”: “%@”, “atualizacao”: “%@”, “device”: “%@”, “device_tipo”: “ios” } } 。 我正在尝试使用Retrofit API 1.8。 当我尝试发送post时抛出一个exception。 例外: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 7 path $ 我正在尝试这个 public class ChatObject { private String usuario; private String adversario; private String atualizacao; private String email; private […]

让GSON&Realm发挥出色

我正在尝试使用Realm + GSON。 如果他们能够很好地合作,那将是天堂般的匹配。 但是,当我使用“extends RealmObject”扩展我的模型对象时,我得到了这个: 10-08 17:00:19.578 12492-12492/appwise.be.gsontestproject E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: appwise.be.gsontestproject, PID: 12492 java.lang.StackOverflowError at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:372) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381) at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376) at […]