我有一组日期。在每个日期都有一组名称,包括进入时间,退出时间。如何将Json格式显示在android中的listview中。
2016年11月7日
杰克上午11点20分晚上10点20分John 12.33am 11.32pm
2016年12月7日
Pete 10.20pm 10.00am
依旧......
我想在listview中显示这样的内容。那么为什么应该是Json格式以及如何访问Json项目。
let currentDate = Date()
let CurrentTimeZone: TimeZone = TimeZone(abbreviation: "UTC")!
let SystemTimeZone: TimeZone = TimeZone.current
let currentGMTOffset: Int = CurrentTimeZone.secondsFromGMT(for: currentDate)
let SystemGMTOffset: Int = SystemTimeZone.secondsFromGMT(for: currentDate)
let interval: TimeInterval = Double(SystemGMTOffset) - Double(currentGMTOffset)
let todayDate: Date = Date(timeInterval: interval, since: currentDate)
print(" Today Date : \(todayDate)")
这就是我如何在没有webservice的情况下直接将日期和详细信息添加到Java列表中。 我正在打印一个月的出勤率。在每个日期,我需要打印员工姓名,入职时间,退出时间
答案 0 :(得分:0)
我认为JSON会是这样的:
{
[
{
"name":"john",
"in":1489051528,
"out":1489053000
},
{
"name":"foo",
"in":1489051528,
"out":1489053000
},
{
"name":"bar",
"in":1489051528,
"out":1489053000
}
]
}
答案 1 :(得分:0)
如果您不想对json数据集进行复杂查询(除了在ListView中显示它),那么您可以使用以下内容:
{
"1478457000000": // 11/07/2016
[
{
"name":"jack",
"in":1478497800000, // 11:20am
"out":1478537400000 // 10:20pm
},
{
"name":"john",
"in":1489051528,
"out":1489053000
}
],
"1481049000000": // 12/07/2016
[
{
"name":"pete",
"in":1481129400000, // 10:20pm
"out":1481085000000// 10:00am
}
]
}
答案 2 :(得分:0)
你回答了自己的问题:
我有一组日期
好的,所以日期是根元素。
在每个日期都有一组名称
每个日期条目都有一个名字子词典。
有进入时间,退出时间
每个名称对应一个进入和退出时间。所以name会映射到一个对象。
最后,你会得到类似的东西:
GitHub
<强> IMPROVEMENTS 强>
如果{
"dates": {
"11/07/2016": {
"jack": {
"username": "jack",
"entry": "11:20am",
"exit": "10:20pm"
},
"john": {
"username": "john",
"entry": "12.33am",
"exit": "11:32pm"
}
},
"12/07/2016": {
"pete": {
"username": "pete",
"entry": "10:20pm",
"exit": "10:00am"
}
}
}
}
和entry
是时间戳而不仅仅是exit
JSON字典不能包含重复的键。因此,您可以使用唯一的用户名作为密钥而不是名字。
答案 3 :(得分:0)
我可能会迟到回答,因为我必须从头开始为你编写代码哈哈..好好检查一下,它可能会帮助你如何访问JSON。
你的JSON会是这样的:
{
"items": [
{
"name":"Jack",
"entryTime":"11.20am",
"exitTime":"10.20pm",
"date":"11/06/2016"
},
{
"name":"John",
"entryTime":"12.33am",
"exitTime":"11.32pm",
"date":"15/06/2015"
},
{
"name":"Pete",
"entryTime":"05.33am",
"exitTime":"04.32pm",
"date":"09/08/2016"
}
]
}
然后要访问它们,您需要一个Model类(POJO),它将保存您要从JSON访问的数据并显示在listView中。
这样的事情:
public class Employee{
private String employeeName;
private String entryTime;
private String exitTime;
private String date;
public String getEmployeeName(){
return employeeName;
}
public void setEmployeeName(String employeeName){
this.employeeName=employeeName;
}
public String getEntryTime(){
return entryTime;
}
public void setEntryTime(String entryTime){
this.entryTime=entryTime;
}
public String getExitTime(){
return exitTime;
}
public void setExitTime(String exitTime){
this.exitTime=exitTime;
}
public String getDate(){
return date;
}
public void setDate(String date){
this.date=date;}
}
现在要访问它们,好吧,如果你正在使用异步任务,那么你可以在String中返回响应。如果你想要一个静态JSON,只需将上面的JSON分配给一个String变量。例如:
String jsonString="{\n" +
" \"items\": [\n" +
" {\n" +
" \"name\":\"Jack\",\n" +
" \"entryTime\":\"11.20am\",\n" +
" \"exitTime\":\"10.20pm\",\n" +
" \"date\":\"11/06/2016\"\n" +
"\n" +
" },\n" +
" {\n" +
" \"name\":\"John\",\n" +
" \"entryTime\":\"12.33am\",\n" +
" \"exitTime\":\"11.32pm\",\n" +
" \"date\":\"15/06/2015\"\n" +
" },\n" +
" {\n" +
" \"name\":\"Pete\",\n" +
" \"entryTime\":\"05.33am\",\n" +
" \"exitTime\":\"04.32pm\",\n" +
" \"date\":\"09/08/2016\"\n" +
" }\n" +
" ]\n" +
"\n" +
" }";
然后可以访问JSON,如:
private ArrayList<Employee> employeeDetails=new ArrayList();/*ArrayList that holds the list data that are to be populated in a listview.*/
try{
JSONObject jObj=new JSONObject(jsonString);
JSONArray jArrray=jObj.getJSONArray("items");
for(int i=0;i<jArray.length();i++){
Employee mEmployee=new Employee();
JSONObject empDetails=jArray.getJSONObject(i);
String empName=empDetails.getString("name");
String entryTime=empDetails.getString("entryTime");
String exitTime=empDetails.getString("exitTime);
String date=empDetails.getString("date");
mEmployee.setEmployeeName(empName);
mEmployee.setEntryTime(entryTime);
mEmployee.setExitTime(exitTime);
mEmployee.setDate(date);
employeeDetails.add(mEmployee);/*add data to arraylist*/
}
}catch(JSONException e){
e.printStacktrace();
}
然后你可以简单地将arraylist传递给listAdapter并填充视图。