2016-11-24 40 views
0
List userList = Arrays.asList(
      new User[] { 
       new User("FirstA", "LastA"), 
       new User("FirstB", "LastB"), 
       new User("FirstC", "LastC") 
       }); 


    add(new ListView("listview", userList) { 
     protected void populateItem(ListItem item) { 
      User user = (User) item.getModelObject(); 
      item.add(new Label("firstname", user.getFirstname())); 
      item.add(new Label("lastname", user.getLastname())); 
     } 
    }); 

上述代码从List userList中添加值,并在Table中显示Firstname和LastName。Wicket:将json传递给java中的ListView

我需要将JSONObject传递给ListView。

JSON模式 -

{"schema":[{"name":"John","id":"01"},{"name":"Sam","id":"02"}]} 

JSON是从数据库中传递 - 仅

JSONObject json=widget.getJsonForTableContent(query); //QUERY from Database 
    json.toString(); 
    System.out.println(json); //Prints json - {"schema":[{"name":"John","id":"01"},{"name":"Sam","id":"02"}]} 
    Iterator<String> iter=json.keys(); 
    while(iter.hasNext()) 
    { 
     String key = iter.next(); 
     System.out.println(key); //prints only "schema" from json in console 
    } 

键值打印控制台 “模式”。 如何解析和遍历JSON打印“名”和“ID”,也和这些值传递给ListView控件在检票口表显示

我只是一个beginner.Any帮助将是appreciated.Thankyou

+0

假设您正在寻找最有效的方法,建议您使用标准的JSON解析器API,如下面的答案。如果目标是学习如何解析复杂的表达式,那么问题/答案需要以不同的方式进行构建。 – clearlight

回答

0

这里为JSON parser /标准API的其他overview with examples

概述提供使用API​​从InputStream解析JSON的例子:

URL url = new URL("https://graph.facebook.com/search?q=java&type=post"); 
try (InputStream is = url.openStream(); 
     JsonParser parser = Json.createParser(is)) { 
    while (parser.hasNext()) { 
     Event e = parser.next(); 
     if (e == Event.KEY_NAME) { 
      switch (parser.getString()) { 
       case "name": 
        parser.next(); 
        System.out.print(parser.getString()); 
        System.out.print(": "); 
        break; 
       case "message": 
        parser.next(); 
        System.out.println(parser.getString()); 
        System.out.println("---------"); 
        break; 
      } 
     } 
    } 
} 

不知道在那里你会最终从派生您的JSON数据,但如果你想用一个静态字符串来测试它,你可以将字符串转换为输入流如下:

InputStream stream = new ByteArrayInputStream(json.toString().getBytes(StandardCharsets.UTF_8)); 

至于你的问题的ListView的一部分 - 它不会一旦你已经解析出令牌,并将它们添加到ListView中,类似于你所做的那样,将会非常困难。