我有以下 JSON 文本。 我如何解析它来获得 pageName、 pagePic、 post id 等等的值 ?
{
"pageInfo": {
"pageName": "abc",
"pagePic": "http://example.com/content.jpg"
},
"posts": [
{
"post_id": "123456789012_123456789012",
"actor_id": "1234567890",
"picOfPersonWhoPosted": "http://example.com/photo.jpg",
"nameOfPersonWhoPosted": "Jane Doe",
"message": "Sounds cool. Can't wait to see it!",
"likesCount": "2",
"comments": [],
"timeOfPost": "1234567890"
}
]}
使用 Java 相关的 JSON 转换工具包如 fastjson 等直接转换成 JOSNObject 后当作普通对象操作就可以了。
Json 库很容易使用。 下面的示例代码:
import org.json.*;
JSONObject obj = new JSONObject(" .... ");String pageName = obj.getJSONObject("pageInfo").getString("pageName");
JSONArray arr = obj.getJSONArray("posts");for (int i = 0; i < arr.length(); i++){
String post_id = arr.getJSONObject(i).getString("post_id");
......}
你可以在以下网站上找到更多的例子: Parse JSON in Java
为了演示,让我们假设您有一个类 Person,它只有一个name。
private class Person {
public String name;
public Person(String name) {
this.name = name;
}}
我个人最喜欢的 JSON 对象序列化 / 反序列化。
Gson g = new Gson();
Person person = g.fromJson("{\"name\": \"John\"}", Person.class);System.out.println(person.name); //John
System.out.println(g.toJson(person)); // {"name":"John"}
如果你想得到一个单一的属性,你可以很容易地使用Google library :
JsonObject jsonObject = new JsonParser().parse("{\"name\": \"John\"}").getAsJsonObject();
System.out.println(jsonObject.get("name").getAsString()); //John
如果您不需要对象反序列化,而只是简单地获得一个属性,那么您可以尝试 org.json
JSONObject obj = new JSONObject("{\"name\": \"John\"}");
System.out.println(obj.getString("name")); //John
ObjectMapper mapper = new ObjectMapper();Person user = mapper.readValue("{\"name\": \"John\"}", Person.class);
System.out.println(user.name); //John
如果想从 JSON 创建 Java 对象,反之亦然,可以使用 GSON 或 JACKSON 第三方 jar 等。
//from object to JSON Gson gson = new Gson();
gson.toJson(yourObject);
// from JSON to object
yourObject o = gson.fromJson(JSONString,yourObject.class);
但是如果你只是想解析一个 JSON 字符串并得到一些值,(或者从头创建一个 JSON 字符串来发送到线上)只需要使用包含 JsonReader,JsonArray,JsonObject 等的 javaee jar。 您可能需要下载该规范的执行,如 javax.json。 通过这两个 jar,我可以解析 json 并使用值。
这些 api 实际上遵循 XML 的 dom / sax 解析模型。
Response response = request.get(); // REST call
JsonReader jsonReader = Json.createReader(new StringReader(response.readEntity(String.class)));
JsonArray jsonArray = jsonReader.readArray();
ListIterator l = jsonArray.listIterator();
while ( l.hasNext() ) {
JsonObject j = (JsonObject)l.next();
JsonObject ciAttr = j.getJsonObject("ciAttributes");
quick-json parser非常简单、灵活、非常快速和可定制。试试看
特点:
• 符合 JSON 规范(RFC4627)
• 高性能 JSON 解析器
• 支持灵活 / 可配置的解析方法
• 任何 JSON 层次结构的键 / 值对的可配置验证
• 引发开发人员友好和易于跟踪的异常
• 验证和非验证解析器支持
• 支持使用快速 json 验证解析器的两种类型的配置(json / xml)
• 要求JDK 1.5
• 通过对象序列化支持 JSON 生成
• 在解析过程中支持集合类型选择
可以这样用:
JsonParserFactory factory=JsonParserFactory.getInstance();JSONParser parser=factory.newJsonParser();Map jsonMap=parser.parseJson(jsonString);
引入fastjson的jar包。
JSONObject one = JSON.parseObject(jsonString);
JSONArray two = one.getJSONArray("pageInfo");
很简单就能解决