2017-05-12 48 views
0

我正在寻找解决此问题的最佳方法。 字符串例如:将字符串拆分为对象字段

{"id":16,"title":"title1","description":"Quote \"foo\" asdf","execution_time":"2017-04-26 06:15:00"} 

我需要创建新的对象从字符串获取字段的值。什么是正确的方法来做到这一点?创建构造函数并将该字符串作为参数传递并在其中使用stringtokenizer?或者,也许使用模式会更好?

+0

这是JSON。您使用JSON解析器来解析JSON。了解JSON是什么,用于“解析Java中的JSON”的谷歌。 –

+0

@JBNizet我知道这是JSON,但我需要将值传递给自定义类。或者将此字符串转换为json对象并将json作为参数传递会更容易? – Dziku

+0

*我需要用字符串*中的获取字段值创建新对象:这就是JSON解析器的全部内容。你想从这个JSON字符串中提取信息,所以使用JSON解析器解析它,它将返回一个自定义对象(如果解析器绑定到类),或者一个Map或一个JSONObject。 –

回答

0

(我将更正代码) 我打算使用org.json.simple。*。在我看来,这很容易,例如:

import org.apache.commons.io.IOUtils; 
import org.json.simple.JSONArray; 
import org.json.simple.JSONObject; 
import org.json.simple.JSONValue; 
import org.json.simple.parser.ParseException; 

public class ParseJson1 { 

    public static void main(String[] args) { 
     String url = "...."; 
     /* 
     * {"id":16,"title":"title1","description":"Quote \"foo\" asdf","execution_time":"2017-04-26 06:15:00"} 
     */ 
     try { 
      String genreJson = IOUtils.toString(new URL(url)); 
      JSONObject genreJsonObject = (JSONObject) JSONValue.parseWithException(genreJson); 
      // get the title 
      System.out.println(genreJsonObject.get("title")); 
      // get the data 
      JSONArray genreArray = (JSONArray) genreJsonObject.get("dataset"); 
      // get the first genre 
      JSONObject firstGenre = (JSONObject) genreArray.get(0); 
      System.out.println(firstGenre.get("genre_title")); 
     } catch (IOException | ParseException e) { 
      e.printStackTrace(); 
     } 
    } 
}