Tag: gson

编写Big JSON文件以避免OutOfMemory问题的最佳方法

首先,请注意今天是我与GSON第一天。 我正在尝试使用GSON库编写Json文件。 我在ArrayList有成千上万的JsonObjects 。 写入Json文件时,它看起来应该与此类似。 [ { “hash_index”: “00102x05h06l0aj0dw”, “body”: “Who’s signing up for Obamacare?”, “_type”: “ArticleItem”, “title”: “Who’s signing up for Obamacare? – Jan. 13, 2014”, “source”: “money.cnn.com”, “primary_key”: 0, “last_crawl_date”: “2014-01-14”, “url”: “http://money.cnn.com/2014/01/13/news/economy/obamacare-enrollment/index.html” }, { “hash_index”: “00102x05h06l0aj0dw0iz0kn0l@0t#0”, “body”: “Who’s signing up for Obamacare?”, “_type”: “ArticleItem”, “title”: “Who’s signing up for Obamacare? – Jan. […]

Gson:解析generics集合

是否可以创建一个从jsson解析generics集合的方法? 我上面的aproach不起作用,因为在运行时gson在这里返回LinkedHasmaps的ArrayList,但是在编译时没有错误。 private ArrayList readArray(String json) { Gson gson = new Gson(); Type collType = new TypeToken<ArrayList>() { }.getType(); return gson.fromJson(json, collType); } 我已经在这里看过一些类似的问题: 使用Gson的generics类型 ,但我找不到解决方案,这确实有效。

如何在Array google-gson中反序列化Array

我有这样的JSON: { “Answers”: [ [ {“Locale”:”Ru”,”Name”:”Name1″}, {“Locale”:”En”,”Name”:”Name2″} ], [ {“Locale”:”Ru”,”Name”:”Name3″}, {“Locale”:”En”,”Name”:”Name4″} ] ] } 如您所见,我在数组中有数组。 如何使用Android上的google-gson库将此类JSON结构反序列化为对象( https://code.google.com/p/google-gson/ )?

Proguard破坏了我的清洁。 Gson和仿制药

我有一个从持久性加载信息的函数,我只是以一种非常简单的方式告诉它的类型。 该类称为SharedPreferencesHelper.kt因此它是一个真正的生活问题解决者: fun loadList(context: Context, fileName: String, key: String, defValue: ArrayList) : ArrayList { val gson = MyGsonDependency.getInstance() val json = getWithFileName(context, fileName).getString(key, gson.toJson(defValue)) return gson.fromJson(json, object : TypeToken<ArrayList>() {}.type) } 加载,例如,我只是做一个ArrayList : SharedPreferencesHelper.loadList( context, FILE_NAME, KEY, ArrayList()) 我发现的问题是当我运行Proguard并模糊我的代码时,每当我调用object : TypeToken<ArrayList>() {}.type我得到一个exception: Caused by: java.lang.AssertionError: illegal type variable reference at libcore.reflect.TypeVariableImpl.resolve(TypeVariableImpl.java:111) at libcore.reflect.TypeVariableImpl.getGenericDeclaration(TypeVariableImpl.java:125) at libcore.reflect.TypeVariableImpl.hashCode(TypeVariableImpl.java:47) […]

GSON中的自定义反序列化?

我需要创建一个自定义反序列化器,以便我能够正确地反序列化我以这种格式收到的日期: 2011-10-19T23:30:00-04:00 。 我的Date对象是许多字段之一,包含我正在反序列化的Object的许多嵌套类之一。 除了Date之外,一切正常。 我的class级看起来像这样: public class OfferContainer{ public Offer offer; public OfferContainer(){} @Override public String toString() { return this.getID() + offer.toString(); } public String getDescription() { return offer.description; } public String getBusinessName() { return offer.business.name; } public class Offer { public Category category; public String description; public String discount; public Date expiration; public […]

为什么gson不允许java.lang.Class的序列化?

如果您尝试序列化具有java.lang.Class类型字段的对象,则序列化将导致java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: Forgot to register a type adapter 以下是com.google.gson.internal.bind.TypeAdapters.java中的代码段 public final class TypeAdapters { . . . public static final TypeAdapter CLASS = new TypeAdapter() { @Override public void write(JsonWriter out, Class value) throws IOException { if (value == null) { out.nullValue(); } else { throw new UnsupportedOperationException(“Attempted to serialize java.lang.Class: ” […]

转换json与gson错误预期BEGIN_OBJECT但是BEGIN_ARRAY在第1行第2列路径$

[{“user_id”:”5633795″,”username”:”_Vorago_”,”count300″:”203483″,”count100″:”16021″,”count50″:”1517″,”playcount”:”1634″,”ranked_score”:”179618425″,”total_score”:”1394180836″,”pp_rank”:”34054″,”level”:”59.6052″,”pp_raw”:”1723.43″,”accuracy”:”96.77945709228516″,”count_rank_ss”:”1″,”count_rank_s”:”19″,”count_rank_a”:”17″,”country”:”US”,”events”:[]}] 我正在尝试使用GSON转换上面的JSON,但遇到了错误。 package com.grapefruitcode.osu; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import com.google.gson.Gson; public class Main { static String ApiKey = “”; public static void main(String[]Args) throws Exception{ String json = readUrl(“”); System.out.println(json); Gson gson = new Gson(); User user = gson.fromJson(json, User.class); System.out.println(); } private static String readUrl(String urlString) throws Exception { BufferedReader reader = […]

使用GSON将POJO序列化为不同名称的JSON?

我有一个像这样的POJO,我使用GSON序列化为JSON: public class ClientStats { private String clientId; private String clientName; private String clientDescription; // some more fields here // getters and setters } 我是这样做的: ClientStats myPojo = new ClientStats(); Gson gson = new Gson(); gson.toJson(myPojo); 现在我的json将是这样的: {“clientId”:”100″, …… } 现在我的问题是:我有没有办法为clientId自己的名字,而不是更改clientId变量名? 在Gson中是否有任何注释我可以在clientId变量的顶部使用? 我想要这样的东西: {“client_id”:”100″, …… }

用gson反序列化json字符串

我的java servlet以这种方式返回一个json字符串: Gson gson = new Gson(); String lista = gson.toJson(utenti); System.out.println(lista); request.setAttribute(“lista”, lista); request.getRequestDispatcher(“GestioneUtenti.jsp”).forward(request, response); 现在,在jsp页面中我想再次使用我的arrayList。 我试着这样做: <% String lista = (String)request.getAttribute("lista"); Gson gson = new Gson(); ArrayList users = gson.fromJson(lista, TypeToken.get(new ArrayList().getClass()).getType()); out.println(users.get(0).getUsername()); %> 我有这个例外: java.lang.ClassCastException: com.google.gson.internal.StringMap cannot be cast to classi.Utente 能帮你吗? 如果我想念一些细节告诉我! 谢谢 :-)

使用Gson使用自定义序列化序列化枚举映射

按照使用GSON解析JSON时使用枚举的建议,我试图使用Gson序列化其键是enum的映射。 考虑以下课程: public class Main { public enum Enum { @SerializedName(“bar”) foo } private static Gson gson = new Gson(); private static void printSerialized(Object o) { System.out.println(gson.toJson(o)); } public static void main(String[] args) { printSerialized(Enum.foo); // prints “bar” List list = Arrays.asList(Enum.foo); printSerialized(list); // prints [“bar”] Map map = new HashMap(); map.put(Enum.foo, true); printSerialized(map); // […]