Articles of gson

使用GSON并启用proguard

我的代码完美无需proguard,但启用proguard时GSON不起作用。 这是代码中不起作用的部分 JSONArray mensaje = response.getJSONArray(“categorias”); // Parsear con Gson Categorias[] categorias = gson.fromJson(mensaje.toString(), Categorias[].class); Log.d(“mainfragment”,”desc categoria “+categorias[0].getDescripcionCategoria()); mainfragment的日志打印为null # Output D/Dato categorias﹕ Respuesta: {“categorias”:[{“idCategoria”:”22″,”imagenCategoria”:”ic_aseguradora”,”descripcionCategoria”:”Aseguradoras”},{“idCategoria”:”24″,”imagenCategoria”:”ic_bar”,”descripcionCategoria”:”Bares”},{“idCategoria”:”12″,”imagenCategoria”:”ic_boutique”,”descripcionCategoria”:”Boutiques”},{“idCategoria”:”6″,”imagenCategoria”:”ic_cafe”,”descripcionCategoria”:”Cafeterias”},{“idCategoria”:”21″,”imagenCategoria”:”ic_ciber”,”descripcionCategoria”:”Ciber”},{“idCategoria”:”10″,”imagenCategoria”:”ic_estetica”,”descripcionCategoria”:”Estéticas”},{“idCategoria”:”1″,”imagenCategoria”:”ic_farmacia”,”descripcionCategoria”:”Farmacias”},{“idCategoria”:”7″,”imagenCategoria”:”ic_ferreteria”,”descripcionCategoria”:”Ferreterias”},{“idCategoria”:”16″,”imagenCategoria”:”ic_gas”,”descripcionCategoria”:”Gas”},{“idCategoria”:”23″,”imagenCategoria”:”ic_gasolinera”,”descripcionCategoria”:”Gasolineras”},{“idCategoria”:”4″,”imagenCategoria”:”ic_gym”,”descripcionCategoria”:”Gimnasios”},{“idCategoria”:”2″,”imagenCategoria”:”ic_hotel”,”descripcionCategoria”:”Hoteles”},{“idCategoria”:”15″,”imagenCategoria”:”ic_lavanderia”,”descripcionCategoria”:”Lavanderias”},{“idCategoria”:”19″,”imagenCategoria”:”ic_muebleria”,”descripcionCategoria”:”Mueblerias”},{“idCategoria”:”25″,”imagenCategoria”:”ic_optica”,”descripcionCategoria”:”Ópticas”},{“idCategoria”:”20″,”imagenCategoria”:”ic_pasteleria”,”descripcionCategoria”:”Pastelerias”},{“idCategoria”:”17″,”imagenCategoria”:”ic_pizza”,”descripcionCategoria”:”Pizzerías”},{“idCategoria”:”13″,”imagenCategoria”:”ic_purificadora”,”descripcionCategoria”:”Purificadoras de agua”},{“idCategoria”:”5″,”imagenCategoria”:”ic_restaurant”,”descripcionCategoria”:”Restaurantes”},{“idCategoria”:”11″,”imagenCategoria”:”ic_ropa”,”descripcionCategoria”:”Ropa”},{“idCategoria”:”9″,”imagenCategoria”:”ic_salon”,”descripcionCategoria”:”Salones de fiestas”},{“idCategoria”:”3″,”imagenCategoria”:”ic_sonido”,”descripcionCategoria”:”Sonidos”},{“idCategoria”:”28″,”imagenCategoria”:”ic_taqueria”,”descripcionCategoria”:”Taquería”},{“idCategoria”:”8″,”imagenCategoria”:”ic_taxi”,”descripcionCategoria”:”Taxis”},{“idCategoria”:”14″,”imagenCategoria”:”ic_tortilleria”,”descripcionCategoria”:”Tortillerias”},{“idCategoria”:”27″,”imagenCategoria”:”ic_veterinaria”,”descripcionCategoria”:”Veterinarias”},{“idCategoria”:”18″,”imagenCategoria”:”ic_vinateria”,”descripcionCategoria”:”Vinaterías”},{“idCategoria”:”26″,”imagenCategoria”:”ic_zapateria”,”descripcionCategoria”:”Zapaterías”}],”estado”:1} D/mainfragment﹕ desc categoria null 这是我的计划规则 #GoogleMaps -keep class * extends java.util.ListResourceBundle { protected Object[][] getContents(); } -keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable { public static final *** NULL; […]

预计BEGIN_OBJECT但在第1行第2列路径$是BEGIN_ARRAY

我试图读取并解析一个以数组开头的JSON字符串(例如[{test: “test”}] )并且我一直遇到错误: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $ 我的日志中的错误指向此行: Gson gson = new GsonBuilder().create(); PayoutCharges payoutList = gson.fromJson(reader, PayoutCharges.class); 在一些stackoverflow答案之后,我创建了PayoutCharges类作为PayoutCharge的数组列表。 如何解决此问题,以便GSON知道JSON字符串在数组中? PayoutCharges.java package com.app.driver.entity; import java.util.ArrayList; import com.google.gson.annotations.SerializedName; public class PayoutCharges { //handle error @SerializedName(“error”) private Error mError; public Error getError() { return mError; } public void setError(Error […]

如何在RetroFit中使用Gson转换器?

我正在制作一个简单的RetroFit应用程序用于教育目的,并使用IntelliJ IDEA作为我的IDE。 我已经正确地导入了Retrofit库(至少我认为我有)但是我无法获得Gson Converter包。 我有谷歌安装的gson.jar,但在这些库中没有任何一个地方有一个名为“GsonConverterFactory”的类,这是我解析JSON所必需的。 编辑:我在Windows上。

如何使用gson调用默认的反序列化

我得到一个有“场”字段的json。 如果“字段”有数据,那么有一个OBJECT有许多(大约20个)其他字段也是对象。 我可以毫无问题地反序列化它们。 但是如果“field”没有数据,那么它就是一个空的ARRAY(我知道它很疯狂,但那是服务器的响应而我无法改变它)。 像这样的东西: 空的时候: “extras”:[ ] 有一些数据: “extras”: { “22”:{ “name”:”some name” }, “59”:{ “name”:”some other name” }, and so on… } 所以,如果没有数据(空数组),我显然得到了exception Caused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 4319 我尝试使用自定义JavaDeserializer: public class ExtrasAdapter implements JsonDeserializer { @Override public Extras deserialize(JsonElement json, Type typeOf, JsonDeserializationContext context) […]

如何抓取JSON数组并使用gson解析每个json对象? (改型)

我正在使用我的json对象返回一个结果数组,我正在尝试使用我的customObjectResponse类来拉出每个对象中的每个字段…它期望一个对象的问题所以我如何编辑我的类允许它接受一个对象数组,然后可以调用每个对象的字段…我很困惑,需要添加什么: 以下是要传递的内容的响应示例: [ { itemId: ‘dfsdfsdf343434’, name: ‘tests’, picture: ‘6976-7jv8h5.jpg’, description: ‘testy.’, dateUpdated: 1395101819, } ] 这是我的响应对象类: public class ObjResponse{ private String itemId; private String name; private String picture; private String description; private String location; private int dateUpdated; private String msg; //gridview constructor public ObjResponse(String picture) { this.picture = picture; } //public constructor public ObjResponse() […]

Gson – 相同的字段名称,不同的types

我今天在一个不同的问题上问过这个问题,但我担心因为它的措辞如何而无法得到任何解决方案。 我有一个json输入,其中包含以下数据: 如您所见, option_value项是一个对象中的Array和另一个对象中的简单字符串。 我怎样才能让Gson正确处理这个问题? 我的类将其描述为List对象,因此它适用于其中option_value是数组的前几个项目,但是当它变为字符串时 ,应用程序崩溃并且我得到json解析exception 。 这有解决方法吗? UPDATE 按要求添加我class级的相关部分: public class Options { String product_option_id; String option_id; String name; String type; String required; List option_value; // get set stuff here public class OptionValue { String product_option_value_id; String option_value_id; String name; String image; String price; String price_prefix; // get set stuff here } }

Retrofit 2示例教程但GsonConverterFactory显示错误“无法解析符号”

我正在尝试遵循Retrofit的2 教程,但是在这部分代码中有一个显示错误的GsonConverterFactory Cannot resolve symbol : public class ServiceGenerator { public static final String API_BASE_URL = “http://your.api-base.url”; private static OkHttpClient httpClient = new OkHttpClient(); private static Retrofit.Builder builder = new Retrofit.Builder() .baseUrl(API_BASE_URL) //THIS IS THE LINE WITH ERROR!!!!!!!!!!!! .addConverterFactory(GsonConverterFactory.create()); public static S createService(Class serviceClass) { Retrofit retrofit = builder.client(httpClient).build(); return retrofit.create(serviceClass); } } 之前我在gradle.build中添加了,我不确定是否应该添加GSON,因为他们说Retrofit 1.9有它但是没有提到Retrofit […]

Retrofit2.0得到MalformedJsonException,而json似乎正确吗?

我正在使用改装:2.0.0-beta4为我的Android应用程序。 我尝试添加用户使用Retrofit,用户在数据库中正确创建,但是我收到以下错误: 03-14 06:04:27.731 30572-30600/com.lehuo.lehuoandroid D/OkHttp: CALLING POST SP_User_CreateUser….your new user_id:48 {“data”:{“user_id”:”48″,”nickname”:null,”password”:null,”status”:null},”status”:1,”msg”:”OK”} 03-14 06:04:27.731 30572-30600/com.lehuo.lehuoandroid D/OkHttp: <– END HTTP (147-byte body) 03-14 06:04:27.732 30572-30600/com.lehuo.lehuoandroid E/My Jobs: error while executing job com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $ at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1573) at com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1423) at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:587) at com.google.gson.stream.JsonReader.peek(JsonReader.java:429) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:202) at […]

谷歌的Json Parsing Gson库:JsonElement和JsonObject有什么区别?

public abstract class JsonElement extends Object 表示Json元素的类。 它可以是JsonObject,JsonArray,JsonPrimitive或JsonNull。 public final class JsonObject extends JsonElement 表示Json中对象types的类。 对象由名称 – 值对组成,其中名称是字符串,值是任何其他types的JsonElement。 这允许创建JsonElements树。 此对象的成员元素按照添加顺序进行维护。 耶谷歌! 没关系那个问题。

Gson将List 反序列化为realmList

我正在使用gson进行改造,将我的json反序列化为领域对象。 这在大多数情况下非常有效。 处理时遇到麻烦 RealmList(String(或任何其他基本数据types)) 由于Realm不支持RealmList,其中E不扩展Realm对象,我将String包装在RealmObject中。 public class RealmString extends RealmObject { private String val; public String getValue() { return val; } public void setValue(String value) { this.val = value; } } 我的领域对象如下 public class RealmPerson extends RealmObject { @PrimaryKey private String userId; … private RealmList stringStuff; private RealmList otherStuff; } SimpleRealmObj工作正常,因为它只有String元素 public class SimpleRealmObj extends […]