Пример JSON недействителен.http://jsonlint.com
www.google.com должен быть заключен в кавычки.Тогда это допустимо.
С исправленным JSON следующий пример десериализации выводит
[Dealer: serviceURL=www.google.com, hoursService={
1=[Hours: dayOfWeek=1, closeTime=6:30 PM, openTime=7:30 AM],
2=[Hours: dayOfWeek=2, closeTime=6:30 PM, openTime=7:30 AM],
3=[Hours: dayOfWeek=3, closeTime=6:30 PM, openTime=7:30 AM]},
dealerAttributes=[
[DealerAttributes: language=English, dealerAttributeName=Spanish Speaking, updateDate=1174971061000],
[DealerAttributes: language=English, dealerAttributeName=null, updateDate=1103003316000]]]
public class Foo
{
static String jsonInput =
"{" +
"\"serviceURL\":\"www.google.com\"," +
"\"hoursService\":" +
"{" +
"\"1\":" +
"{" +
"\"dayOfWeek\":1," +
"\"closeTime\":\"6:30 PM\"," +
"\"openTime\":\"7:30 AM\"" +
"}," +
"\"2\":" +
"{" +
"\"dayOfWeek\":2," +
"\"closeTime\":\"6:30 PM\"," +
"\"openTime\":\"7:30 AM\"" +
"}," +
"\"3\":" +
"{" +
"\"dayOfWeek\":3," +
"\"closeTime\":\"6:30 PM\"," +
"\"openTime\":\"7:30 AM\"" +
"}" +
"}," +
"\"dealerAttributes\":" +
"[" +
"{" +
"\"language\":\"English\"," +
"\"dealerAttributeName\":\"Spanish Speaking\"," +
"\"updateDate\":1174971061000" +
"}," +
"{" +
"\"language\":\"English\"," +
"\"updateDate\":1103003316000" +
"}" +
"]" +
"}";
public static void main(String[] args)
{
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
Dealer dealer = gson.fromJson(jsonInput, Dealer.class);
System.out.println(dealer);
}
}
class Dealer
{
private String serviceURL;
private Map<String, Hours> hoursService;
private List<DealerAttributes> dealerAttributes;
@Override
public String toString()
{
return String.format(
"[Dealer: serviceURL=%1$s, hoursService=%2$s, dealerAttributes=%3$s]",
serviceURL, hoursService, dealerAttributes);
}
}
class Hours
{
private int dayOfWeek;
private String closeTime;
private String openTime;
@Override
public String toString()
{
return String.format(
"[Hours: dayOfWeek=%1$d, closeTime=%2$s, openTime=%3$s]",
dayOfWeek, closeTime, openTime);
}
}
class DealerAttributes
{
private String language;
private String dealerAttributeName;
private long updateDate;
@Override
public String toString()
{
return String.format(
"[DealerAttributes: language=%1$s, dealerAttributeName=%2$s, updateDate=%3$d]",
language, dealerAttributeName, updateDate);
}
}
При этом используются универсальные типы, которые, как я понимаю, вы сказали, что вы не использовали длясериализуйте, но вы застряли с тем же ограничением при десериализации?Если это так, то вам придется реализовать еще один «ручной» анализ десериализации, потому что, как говорят в документах, «[w] hile deserializing, Collection должен иметь определенный универсальный тип» .