我使用json_encode函数将ical转换为JSON对象(PHP),这是我的JSON对象:
{
"VEVENT":[
{
"DTSTART":"20190531T030000Z",
"DTEND":"20190531T033000Z",
"SUMMARY":"EVENT1",
"DESCRIPTION":"",
"UID":"2046_255_71",
"SEQUENCE":"0",
"DTSTAMP":"20190531T172850Z",
"TRANSP":"TRANSPARENT",
"UNIX_TIMESTAMP":1559289600,
"REAL_DATETIME":"31.05.2019"
},
{
"DTSTART":"20190603T030000Z",
"DTEND":"20190603T033000Z",
"SUMMARY":"EVENT2",
"DESCRIPTION":"",
"UID":"1481_6_13",
"SEQUENCE":"0",
"DTSTAMP":"20190531T172850Z",
"TRANSP":"TRANSPARENT",
"UNIX_TIMESTAMP":1559548800,
"REAL_DATETIME":"03.06.2019"
}
]
}
当我尝试在Android应用中解析它时,出现此错误:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
看看其他帖子,大多数解决方案是检查JSON对象的第一个括号。我的JSON对象的开头带有括号。我确定为什么会得到这个。
PHP代码:
<?php
require 'class.iCalReader.php';
try{
//setup ical object
$cur_time_zone = 'America/Chicago';
$ical_file = 'file.ics';
$ical = new ICal($ical_file);
$ical->time_zone = $cur_time_zone;
date_default_timezone_set($cur_time_zone); //Central or America/Chicago
$events = $ical->sortEventsWithOrder($ical->events(), SORT_ASC);
$myJSON = json_encode($events);
echo "{" . "\"VEVENT\":" . $myJSON . "}";
} catch (Exception $e) {
die($e);
}
?>