Tag: gson

gson抛出MalformedJsonException

我正在使用gson将jsonstring转换为Java对象。 result2的值与result1的值完全相同。 (从debugging器复制;添加了反斜杠) 转换result1时将引发以下exception: com.google.gson.JsonSyntaxException:com.google.gson.stream.MalformedJsonException:第1行中的预期EOF列170 转换result2工作正常。 jsonstring根据jsonlint.com是有效的。 public static Userinfo getUserinfo() { String result1 = http.POST("https://www.bitstamp.net/api/balance/", postdata, true); String result2 = "{\"btc_reserved\": \"0\", \"fee\": \"0.5000\", \"btc_available\": \"0.10000000\", \"usd_reserved\": \"0\", \"btc_balance\": \"0.10000000\", \"usd_balance\": \"30.00\", \"usd_available\": \"30.00\"}"; Gson gson = new Gson(); Userinfo userinfo1 = gson.fromJson(result1, Userinfo.class); //throws Exception Userinfo userinfo2 = gson.fromJson(result2, Userinfo.class); //works fine return […]

Gson是默认的无参数构造函数吗?

Gson用户指南指出,我们应该定义任何类的默认无参数构造函数来正确使用Gson。 更甚者,在Gson的InstanceCreator类的javadoc上说,如果我们尝试反序列化类的实例,缺less默认的构造函数,我们应该在这种情况下使用InstanceCreator 。 不过,我试着用缺乏默认构造函数的类来testingGson,而序列化和反序列化都没有任何问题。 这是deserializaiton的一段代码。 没有非参数构造函数的类: public class Mushroom { private String name; private double diameter; public Mushroom(String name, double diameter) { this.name = name; this.diameter = diameter; } //equals(), hashCode(), etc. } 和一个testing: @Test public void deserializeMushroom() { assertEquals( new Mushroom("Fly agaric", 4.0), new Gson().fromJson( "{name:\"Fly agaric\", diameter:4.0}", Mushroom.class)); } 这工作正常。 所以我的问题是: 我真的可以使用Gson而不需要有默认的构造函数,或者在任何情况下它不起作用?

ADT和SDK工具更新至v17后,Gson NoClassDefFoundError

今天我更新了我的ADT和SDK Tools到v17,我的项目使用Google的gson jar库开始抛出NoClassDefFoundError。 这是logcat输出: > 03-22 12:30:58.941: E/AndroidRuntime(21672): FATAL EXCEPTION: main > 03-22 12:30:58.941: E/AndroidRuntime(21672): > java.lang.NoClassDefFoundError: com.google.gson.Gson 03-22 > 12:30:58.941: E/AndroidRuntime(21672): at > com.matriksdata.conn.XRequestHandler.connect(XRequestHandler.java:35) > 03-22 12:30:58.941: E/AndroidRuntime(21672): at > com.matriksdata.conn.XRequestHandler.makeRequest(XRequestHandler.java: > 29) 03-22 12:30:58.941: E/AndroidRuntime(21672): at > com.matriksdata.bavul.XBaseWithConnectionActivity.makeRequest(XBaseWithConnectionActivity.java: > 46) 03-22 12:30:58.941: E/AndroidRuntime(21672): at > com.matriksdata.ui.login.SplashScreenActivity.onCreate(SplashScreenActivity.java: > 36) 03-22 12:30:58.941: E/AndroidRuntime(21672): at > […]

“期望BEGIN_OBJECT,但在第1行第1列”

我有这个方法: public static Object parseStringToObject(String json) { String Object = json; Gson gson = new Gson(); Object objects = gson.fromJson(object, Object.class); parseConfigFromObjectToString(object); return objects; } 我想parsing一个JSON: public static void addObject(String IP, Object addObject) { try { String json = sendPostRequest("http://" + IP + ":3000/config/add_Object", ConfigJSONParser.parseConfigFromObjectToString(addObject)); addObject = ConfigJSONParser.parseStringToObject(json); } catch (Exception ex) { ex.printStackTrace(); } […]

Gson序列化一个多态对象列表

我试图序列化/反序列化一个涉及多态的对象,使用Gson到JSON。 这是我的序列化代码: ObixBaseObj lobbyObj = new ObixBaseObj(); lobbyObj.setIs("obix:Lobby"); ObixOp batchOp = new ObixOp(); batchOp.setName("batch"); batchOp.setIn("obix:BatchIn"); batchOp.setOut("obix:BatchOut"); lobbyObj.addChild(batchOp); Gson gson = new Gson(); System.out.println(gson.toJson(lobbyObj)); 结果如下: {"obix":"obj","is":"obix:Lobby","children":[{"obix":"op","name":"batch"}]} 序列化主要工作,除了遗漏了inheritance成员的内容(特别是obix:BatchIn和obixBatchoutstring丢失)。 这是我的基类: public class ObixBaseObj { protected String obix; private String display; private String displayName; private ArrayList<ObixBaseObj> children; public ObixBaseObj() { obix = "obj"; } public void setName(String name) { […]

如何parsingjsonparsing在android中使用GSON

我正在使用GSON来分析Json数据。 我的Json数据如下: { "count": "12", "colbreak": 1, "name": "unary rels", "score": "9090", "Words": [ { "count": 6, "word": "prp_għaċ-", "name": "prp_għaċ-", "score": 9.1, "Words": "kol", "seek": 2231297 } ], "seek": 0 } GsonParse.java public class GsonParse { @SerializedName("count") public String count; @SerializedName("colbreak") public String colbreak; @SerializedName("name") public String count; @SerializedName("score") public String score; @SerializedName("Words") public […]

使用Gson的自定义JSON解串器

我有使用GsonparsingJSON响应的问题。 JSONstring: response: [ 2, { owner_id: 23972237, album_id: 25487692, title: 'album not new' }, { owner_id: 23972237, album_id: 25486631, title: 'фыв' } ] 我有这两个类: public class VkAudioAlbumsResponse { public ArrayList<VkAudioAlbum> response; public VkError error; } public class VkAudioAlbum { public int owner_id; public int album_id; public String title; } 但是,当使用Gsonparsing这个时,我有一个exception。 我知道这是因为响应数组的第一个元素不是一个对象,而是整数。 所以问题是,我能以某种方式解决吗?

如何用GsonparsingJSON数组

我想parsingJSON数组并使用gson。 首先,我可以loggingJSON输出,服务器清楚地响应客户端。 这是我的JSON输出: [ { id : '1', title: 'sample title', …. }, { id : '2', title: 'sample title', …. }, … ] 我试着parsing这个结构。 一个类,它依赖于所有JSONArray的单个array和ArrayList 。 public class PostEntity { private ArrayList<Post> postList = new ArrayList<Post>(); public List<Post> getPostList() { return postList; } public void setPostList(List<Post> postList) { this.postList = (ArrayList<Post>)postList; } } 职位: […]

jacksonVS. Gson

在search了一些现有的JSON库之后,我终于find了这两个: jackson Google GSon 我对GSON有些偏袒,但networking上的一句话是GSon遭受了某种天体性能问题 (截至2009年9月)。 我正在继续我的比较; 在此期间,我正在寻求帮助来下定决心。

JAVA – parsing巨大(超大)的JSON文件的最佳方法

我试图parsing一些巨大的JSON文件(如http://eu.battle.net/auction-data/258993a3c6b974ef3e6f22ea6f822720/auctions.json )使用gson库( http://code.google.com/p/google- gson / )在JAVA中。 我想知道什么是parsing这种大文件(大约80k行)最好的方法,如果你可能知道可以帮助我处理这个问题的好的API。 一些想法… 逐行阅读并删除JSON格式:但这是无稽之谈。 通过将这个文件分割成许多其他文件来减lessJSON文件:但是我没有find任何好的Java API。 直接使用这个文件作为非Sql数据库,保存该文件并将其用作我的数据库。 我真的很感激adices / help / messages / :-)谢谢。