如何使用GSON反序列化PHP数组

时间:2011-02-23 22:28:10

标签: java php gson

在PHP中,我使用json_encode序列化一个数组,我尝试用我的Android设备上的GSON读取。但是Android崩溃了一个致命的例外。我无法使用我见过的任何示例。我认为它是由JSON字符串引起的。它从数组的索引开始(下例中的19和17),我还没有看到这种类型的JSON字符串的任何示例。我见过的所有示例都以属性名称开头,而不是索引/ cpunter。

这是我的JSON示例:

  

{" 19" {" ID":" 1262""用户名":" ABC&#34 ;, " telnr":" 0123456789""创建":"太阳,   2010年8月8日10:29:06   + 0200""电子邮件":" e@mail.com","代码":空}" 17":{ " ID":" 1259""用户名":" CDEF"" telnr":" 9876543210& #34;"创建":"太阳,   2010年8月8日10:29:06   + 0200""电子邮件":" mail@domain.com","代码":空},

在许多其他组合中,我尝试了以下两个例子:

Type listType = new TypeToken<List<String>>(){}.getType(); 
List<String> personList = new Gson().fromJson(json, listType);

Type playerType = new TypeToken<List<Player>>(){}.getType(); 
List<Player> players = new Gson().fromJson(json.toString(), playerType);

我收到以下错误:

threadid=1: thread exiting with uncaught exception
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{...}:java.lang.NullPointerException

我有一个Player类/ bean,可以保存id,username,telnr,created,email和code属性。我希望有人能为我提供一个可用于此JSON字符串的GSON代码示例。感谢。

1 个答案:

答案 0 :(得分:1)

JSON对象中的属性名称(上面的“19”和“17”)必须是有效的Javascript标识符。它们只能包含字母,数字,下划线和美元符号,但它们可能不以数字开头。您必须分配不同的键或完全删除键以形成Javascript数组。

$values = array_values($arrayWithKeys);