English 中文(简体)
Gson族例外,与JsonArray和JsonObject读Json
原标题:Gson exception while reading Json with JsonArray and JsonObject

我正试图用Gson呼吁作出 j击。 但是,它包含一个位于同一个地方的JSONArray物体和一个位于同一等级的JSONObject。

"{"SERVICES":{"Results":[{"Items":{"Item":[{"@Id":"10"},{"@Id":"12"}]}}, 
  {"Items":{"Item":{"@Id":"13"}}}]}}"

在这种等级结构中,

    {"SERVICES":
        {"Results":
            [
             {"Items":
                {"Item":
                    [
                     {"@Id":"10"},
                     {"@Id":"12"}
                    ]
                }
             },
             {"Items":
                {"Item":
                    {"@Id":"13"}
                }
             }
             ]
        }
    }

Here first Item element contain an array and second one is an object. Below is my code,

import java.util.Iterator;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;

public class Next { 
public static void main(String args[]){

    String jsonData = Services.getJsonData();   //{"SERVICES":{"Results":[{"Items":{"Item":[{"@Id":"10"},{"@Id":"12"}]}}, {"Items":{"Item":{"@Id":"13"}}}]}}    

    TResponseInfo responseInfo = new Gson().fromJson(jsonData, TResponseInfo.class);        
    }

class TResponseInfo{
    TServicesInfo SERVICES;
}

class TServicesInfo {
    List<TResultsInfo> Results;
}

class TResultsInfo {
    TItemsInfo Items;
}

class TItemsInfo {
    List<TItemInfo> Item;
    //TItemInfo Item;
}

class TItemInfo {
    @SerializedName("@Id")
    int Id;
}

这里我是例外:

鉴于java.util的类型,没有将json物体{“@Id”:“13”}分解。 名单

内容提要 这不是一个JSON Array。

问题回答

最新消息:您的Json似乎是错误的,您的Item:是一个阵列,但是在座各位的第二位是标的。

First you have:

"Item":
                [
                 {"@Id":"10"},
                 {"@Id":"12"}
                ]

then you have:

"Item":
                {"@Id":"13"}

这应当:

 "Item":
               [
                {"@Id":"13"}
               ]

It can be hard to manage generics with Gson. I would suggest you to use arrays instead. E.g. something like this:

class TResponseInfo{
    TServicesInfo SERVICES;
}

class TServicesInfo {
    TResultsInfo[] Results; // an array  instead of a generic List
}

class TResultsInfo {
    TItemsInfo Items;
}

class TItemsInfo {
    TItemInfo[] Item; // an array instead of a generic List
}




相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签