java中的jsonarray_JSONArray在JSONArray中使用Java中的向量

如何将内部JSONArray数据放入向量?当我只想打印数据时,程序只会在我想将数据放入向量时崩溃 . 为什么?如何解决这个问题?当我用vector运行程序时:

0

Budapest

Szolnok

time: 0 2018.10.21. 11:20 2018.10.21. 13:25

Exception in thread "main" java.lang.NullPointerException

at Routes.addTime(Routes.java:20)

at JSONReader.main(JSONReader.java:30)

当我运行whitout vecor时(只需在控制台上打印好输出):

0

布达佩斯

索尔诺克

时间:0 2018.10.21 . 2018.10.21 11:20 13:25

时间:1 2018.10.21 . 2018.10.21 13:20 15:25

1

维斯普雷姆

布达佩斯

时间:0 2018.10.30 . 2018.10.30 09:35 11:02

2

维斯普雷姆

杰尔

时间:0 2018.11.10 . 2018.11.10 15:46 16:50

1

杰尔

松博特海伊

时间:0 2018.11.05 . 2018.11.05 13:10 14:50

JSONReader.java

import org.json.JSONArray;

import org.json.JSONObject;

public class JSONReader {

static String JSON_STRING = "{\"routes\": [{\"id\": 0,\"from\": \"Budapest\",\"to\": \"Szolnok\",\"times\": [{ \"id\": 0, \"start\": \"2018.10.21. 11:20\", \"arrive\": \"2018.10.21. 13:25\" },{ \"id\": 1, \"start\": \"2018.10.21. 13:20\", \"arrive\": \"2018.10.21. 15:25\" }]}, {\"id\": 1,\"from\": \"Veszprem\",\"to\": \"Budapest\",\"times\": [{ \"id\": 0, \"start\": \"2018.10.30. 09:35\", \"arrive\": \"2018.10.30. 11:02\" }]}, {\"id\": 2,\"from\": \"Veszprem\",\"to\": \"Gyor\",\"times\": [{ \"id\": 0, \"start\": \"2018.11.10. 15:46\", \"arrive\": \"2018.11.10. 16:50\" }],}, {\"id\": 1,\"from\": \"Gyor\",\"to\": \"Szombathely\",\"times\": [{ \"id\": 0, \"start\": \"2018.11.05. 13:10\", \"arrive\": \"2018.11.05. 14:50\" }],}]}";

public static void main(String[] args) {

//RoutSystem routsystem = new RoutSystem();

JSONObject object = new JSONObject(JSON_STRING);

JSONArray routes = object.getJSONArray("routes");

for (int y = 0; y < routes.length(); y++) {

JSONObject route = routes.getJSONObject(y);

int id = route.getInt("id");

String from = route.getString("from");

String to = route.getString("to");

JSONArray time = route.getJSONArray("times");

System.out.println(id);

System.out.println(from);

System.out.println(to);

Routes rout = new Routes(id, from, to);

for (int z = 0; z < time.length(); z++) {

JSONObject valami = time.getJSONObject(z);

int id1 = valami.getInt("id");

String start = valami.getString("start");

String arrive = valami.getString("arrive");

System.out.println("time: " + id1 + " " + start + " " + arrive);

rout.addTime(id1, start, arrive);

}

//rout.printRout();

//routsystem.addRoute(rout);

}

}

}

Routes.java

import java.util.Vector;

public class Routes {

int id;

String from, to;

Vector times;

public Routes(int _id, String _from, String _to) {

id = _id;

from = _from;

to= _to;

}

public void addTime(int id, String start, String arrive) {

Times time = new Times();

time.setid(id);

time.setstart(start);

time.setarrive(arrive);

times.add(time);

}

public void printRout() {

System.out.println(id);

System.out.println(from);

System.out.println(to);

for (Times t : times) {

System.out.println(t.getid() + " " + t.getstart() + " " + t.getarrive());

}

}

}

Times.java

public class Times {

int id;

String start, arrive;

public Times() {

id = 0;

start = "";

arrive = "";

}

public int getid() {

return id;

}

public String getstart() {

return start;

}

public String getarrive() {

return arrive;

}

public void setid(int i) {

id = i;

}

public void setstart(String s) {

start = s;

}

public void setarrive(String a) {

arrive = a;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值