需要使用Java读取JSON数组对象

时间:2019-06-26 14:13:15

标签: java json

需要使用Java迭代json数组对象,请为此提供一些指导

我已经摆好了JSON结构 下面是开发人员提供的json,我需要获取json数组对象作为我的Selenium脚本的输入。

有人可以帮我吗?

public class QueueManager<T extends MessageType> {

    private Map<UUID, BlockingQueue<T>> queueMap;

    public void removeQueue(UUID id) {
      queueMap.remove(id);
    }

    public BlockingQueue<T> getQueue(UUID id, Supplier<BlockingQueue<T>> createQueue) {
        return queueMap.computeIfAbsent(id, k -> createQueue.get());
    }

    // let's add a default while we're at it 
    public BlockingQueue<T> getQueue(UUID id) {
        return getQueue(id, () -> new ArrayBlockingQueue<T>(50));
    }
}

预期 字符串名称=名称值 字符串courseName = CourseName的值

2 个答案:

答案 0 :(得分:0)

好吧,这里我们只导入ObjectMapper类,当然,必须在所需的类中实例化它。 之后,调用函数:

Object object = objectMapper.readValue(jsonAsString, Object.class);

也许对您有用。

答案 1 :(得分:0)

您有很多选择来读取JSON,可以使用primefaces库中的JSONArray或Google库中的JsonArray。

在这种情况下,我使用import org.primefaces.json.JSONArray; 如果使用maven,请确保具有该库或jar或依赖项。

要获取姓名和课程名称,请执行以下操作:

JSONArray jArray = new JSONArray(yourJsonStringGoesHere);
String name = jArray.getJSONObject(0).getString("Name");
String courseName = jArray.getJSONObject(0).getJSONArray("Courses").getJSONObject(0).getString("CourseName");

此外,如果您需要从JSON获取每个单独的名称和courseName,则可以执行如下所示的for循环:

            // JSONArray made with your JSON String
            JSONArray jArray = new JSONArray(yourJsonString);
            // JSONArray made with the sub array of courses in your JSON
            JSONArray jArrayCourses = jArray.getJSONObject(0).getJSONArray("Courses");
            // Loop trough your JSON array
            for (int i = 0; i < jArray.length(); i++) {
                // Get name of each JSONObject inside your array
                String name = jArray.getJSONObject(i).getString("Name");
                System.out.println("name: "+name);
                // Loop trough each sub array of courses.
                for (int j = 0; j < jArrayCourses.length(); j++) {
                    // Get courseName of each JSONObject inside your courses sub array
                    String courseName = jArray.getJSONObject(i).getJSONArray("Courses").getJSONObject(j)
                            .getString("CourseName");
                    System.out.println("courseName: "+courseName);

                }

            }

输出

name: Name1
courseName: JAVA
courseName: Testing
name: Name2
courseName: JAVAV2
courseName: Security

如果您今天听不懂什么,或者您需要其他帮助,请问我:)