- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在执行一个 Web 服务,这是我的响应,但是当我尝试使用 Gson 库将此 JSONObject(org.json.JSONObject) 转换为特定对象时,我的应用程序崩溃了。所以,我不知道为什么会发生这种情况。JSON:
{
"atributos": {
"id": "1",
"nombre": "Cliente",
"descripcion": "Cliente",
"version": "1"
},
"elementos": "[{
"id": "1",
"name" : "akira"
},
{
"id": "4",
"name" : "akira"
},
{
"id": "5",
"name" : "akira"
},
{
"id": "6",
"name" : "akira"
},
{
"id": "7",
"name" : "akira"
},
{
"id": "8",
"name" : "akira"
},
{
"id": "9",
"name" : "akira"
},
{
"id": "10",
"name" : "akira"
},
{
"id": "11",
"name" : "akira"
},
{
"id": "12",
"name" : "akira"
},
{
"id": "13",
"name" : "akira"
},
{
"id": "14",
"name" : "akira"
},
{
"id": "15",
"name" : "akira"
},
{
"id": "16",
"name" : "akira"
},
{
"id": "17",
"name" : "akira"
},
{
"id": "18",
"name" : "akira"
}]"
}
错误:
java.lang.StackOverflowError
05-02 17:50:56.166: E/AndroidRuntime(8130): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:117)
05-02 17:50:56.166: E/AndroidRuntime(8130): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:72)
05-02 17:50:56.166: E/AndroidRuntime(8130): at com.google.gson.Gson.getAdapter(Gson.java:356)
05-02 17:50:56.166: E/AndroidRuntime(8130): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(ReflectiveTypeAdapterFactory.java:82)
05-02 17:50:56.166: E/AndroidRuntime(8130): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:81)
05-02 17:50:56.166: E/AndroidRuntime(8130): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:118)
05-02 17:50:56.166: E/AndroidRuntime(8130): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:72)
05-02 17:50:56.166: E/AndroidRuntime(8130): at com.google.gson.Gson.getAdapter(Gson.java:356)
05-02 17:50:56.166: E/AndroidRuntime(8130): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(ReflectiveTypeAdapterFactory.java:82)
05-02 17:50:56.166: E/AndroidRuntime(8130): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:81)
最佳答案
当我验证给定的 json 时,它有一些错误(给出的示例 Json 不是有效的 json)。在打开和关闭之前,您的 json 在 elementos 数组中有 " ,可能会导致堆栈溢出当您尝试使用 Gson 解析 json 时出错。
"elementos": "[{.....]"
请使用一些 json validator 站点验证您的 json,例如 jsonlint
所以首先我们需要有效的 json ,我通过省略 " 使你的 json 有效
会是这样的
更改后的 Json
{
"atributos": {
"id": "1",
"nombre": "Cliente",
"descripcion": "Cliente",
"version": "1"
},
"elementos": [
{
"id": "1",
"name": "akira"
},
{
"id": "4",
"name": "akira"
},
{
"id": "5",
"name": "akira"
},
{
"id": "6",
"name": "akira"
},
{
"id": "7",
"name": "akira"
},
{
"id": "8",
"name": "akira"
},
{
"id": "9",
"name": "akira"
},
{
"id": "10",
"name": "akira"
},
{
"id": "11",
"name": "akira"
},
{
"id": "12",
"name": "akira"
},
{
"id": "13",
"name": "akira"
},
{
"id": "14",
"name": "akira"
},
{
"id": "15",
"name": "akira"
},
{
"id": "16",
"name": "akira"
},
{
"id": "17",
"name": "akira"
},
{
"id": "18",
"name": "akira"
}
]
}
**现在是编码部分:**要使用 Gson 解析此 jsonresponse,请按照以下步骤操作
创建一个 JsonResponse 类
public class JsonResponse {
/*Class handle the Whole json*/
//Variable name should be same as the names given in the json response
Atributos atributos;// Attributos class handles the data in atributos obj from the json . The variable name of Attributos should be same as the json objects ie atributos
ArrayList<ElementosObj>elementos=null;//elementos is a array which hold some datas ,so make a class ElementosObj to handle the data in the elementos array.
}
类别属性
public class Atributos {
/*Class handle the atributos obj from json*/
//Variable name should be same as the names given in the json response
public String id = null;
public String nombre = null;
public String descripcion = null;
public String version = null;
}
ElementosObj 类
public class ElementosObj {
/*Class handle the elementos array from json*/
//Variable name should be same as the names given in the json response
String id=null;
String name=null;
}
现在在你的主类中解析上面的 json
主类
String jsonData = "String jsonData Contain your parsed jsondata ";
Gson mGson = new Gson();
JsonResponse mObj1 = (JsonResponse) mGson.fromJson(jsonData,
JsonResponse.class);
Log.d("Atributos:ID", mObj1.atributos.id);
Log.d("Atributos:DESCRIBTION", mObj1.atributos.descripcion);
Log.d("Atributos:NUMBER", mObj1.atributos.nombre);
Log.d("Atributos:VERSION", mObj1.atributos.version);
for (int i = 0; i < mObj1.elementos.size(); i++) {
Log.d("Elementos:ID For Postion " + i, mObj1.elementos.get(i).id);
Log.d("Elementos:NAME For Postion " + i,
mObj1.elementos.get(i).name);
}
输出将是这样的
05-03 01:32:51.548: D/Atributos:ID: 1
05-03 01:32:51.548: D/Atributos:DESCRIBTION: Cliente
05-03 01:32:51.548: D/Atributos:NUMBER: Cliente
05-03 01:32:51.548: D/Atributos:VERSION: 1
05-03 01:32:51.548: D/Elementos:ID For Postion 0: 1
05-03 01:32:51.548: D/Elementos:NAME For Postion 0: akira
05-03 01:32:51.548: D/Elementos:ID For Postion 1: 4
05-03 01:32:51.558: D/Elementos:NAME For Postion 1: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 2: 5
05-03 01:32:51.558: D/Elementos:NAME For Postion 2: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 3: 6
05-03 01:32:51.558: D/Elementos:NAME For Postion 3: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 4: 7
05-03 01:32:51.558: D/Elementos:NAME For Postion 4: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 5: 8
05-03 01:32:51.558: D/Elementos:NAME For Postion 5: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 6: 9
05-03 01:32:51.558: D/Elementos:NAME For Postion 6: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 7: 10
05-03 01:32:51.558: D/Elementos:NAME For Postion 7: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 8: 11
05-03 01:32:51.558: D/Elementos:NAME For Postion 8: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 9: 12
05-03 01:32:51.558: D/Elementos:NAME For Postion 9: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 10: 13
05-03 01:32:51.558: D/Elementos:NAME For Postion 10: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 11: 14
05-03 01:32:51.558: D/Elementos:NAME For Postion 11: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 12: 15
05-03 01:32:51.558: D/Elementos:NAME For Postion 12: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 13: 16
05-03 01:32:51.558: D/Elementos:NAME For Postion 13: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 14: 17
05-03 01:32:51.558: D/Elementos:NAME For Postion 14: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 15: 18
05-03 01:32:51.558: D/Elementos:NAME For Postion 15: akira
希望这对您有帮助谢谢
关于java - Gson stackoverflow Gson.fromJson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23438174/
我正在尝试将 Android Pay 集成到我的应用程序中,并且正在按照 google 提供的教程进行操作。但是我被困在执行 IsReadyToPayRequest 的地方; IsReadyToPay
我正在使用一个代码库,该代码库获取网络响应的主体并将其提供给具有 fromJson(Reader json, Type typeOfT) 的 GSON 实例以创建 POJO。 通常我会看到对 from
我有一个对象要解析,看起来有点像这样: { "data": [ { "virtio0": "some text", "virtio1": "blah",
我开发了具有客户端-服务器和数据库的 android 应用。 我使用gson来解析服务端和客户端之间的对象。 我的日期类型是 java.sql.date 当我运行此代码时(消息是我创建的对象...):
假设我有一个类: class A { List b; } class C { String str; } 我有一个包含以下内容的 json 字符串: { "b": [
如何使用 fromJSON 发送 header 信息? 例如,这是我从服务器请求 json 数据的方式,但服务器将需要我这边的一些身份验证信息。 public_key <- 'VzUZFW1cQzP0
首先简要概述我的一般问题然后显示我卡在哪里可能更容易。 我想接收一些单例索引类型的 JSON 列表,其中索引类型也具有关联的类型族。在代码中: data MyType = MyValue1 | MyV
我有一个 ajax 调用将 json 发送到 Yesod 中的路由,我希望路由解析 json 并将其直接插入数据库。在我的模型文件中,我有 createtime UTCTime default=now
我有以下 double 值 vector x,其中每个元素代表POSIX日期时间 x <- c(1417621083, 1417621204, 1417621384, 1417621564, 1417
我正在执行一个 CommandLineRunner,它接受输入文件 (json) 并将其转换为 dto 以进行进一步处理。 List users = gson.fromJson(new InputSt
我正在尝试定义一个可以限制为 Nat 子集的类型。虽然我意识到一个简单的解决方案是使用常规 ADT,但我仍然很好奇是否可以使用随附的 FromJSON 实例来定义此类类型。这是我到目前为止所拥有的:
我想按以下方式使用 GSON.fromJSON: Class type = Abc.class; Class parametersObject = GSON.fromJson(parameters,
我正在使用 gson 来解析来自 HttpExchange 对象的数据。但是,在我的 IDE 中,我在使用 .fromjson 的行处设置了一个断点,并且它永远不会越过该行。它只是一次又一次地回到它。
{ "status_code": 200, "status_text": "Success", "count": 96, "data": [ { "model": "Spark
我正在使用 firebase DB 编写 Android 应用程序,并在 android api 22 上测试它,它可以工作,但是当我尝试在 api 26(xiaomi mi 6)上启动它时,它终止了
我尝试在下一个 json 上应用 gson.fromJson: { "1a": {"param1": "text", "param2": "text1", "p
我正在尝试使用 AngularJS 的 UI-Router 来实现嵌套 View ,这似乎有效。但是,在第97行中,您会发现一个解析,它延迟了嵌套 View 的初始化,直到接收并处理数据为止。 您会注
我正在尝试使用 com.google.gson.Gson 将 JSON 绑定(bind)到 Java POJO 类像这样: MyClass data = gson.fromJson(jsonStrin
我面临反序列化问题,因为我对两个不同的网络响应使用相同的对象结构。在“搜索”中,我得到了一组对象,而在“详细信息”中,我只得到了一个对象。 搜索代码: InputStream source = Hel
我已经完成了关于 how to connect to Json url and parse the content 的教程使用 GSON 库。该代码适用于教程中指定的 url,但我尝试修改它以适用于
我是一名优秀的程序员,十分优秀!