如何在servlet中获取Json String中的属性

时间:2016-10-09 15:59:55

标签: javascript java json ajax

如何在Json字符串中获取每个属性?

我通过JSON.stringify在JavaScript中首先转换我的对象数组来获得Json。之后我使用ajax将字符串传递给我的servlet。

Servlet代码:

String data = request.getParameter("jsonData");       
System.out.println("json data: " + data);

结果:

[{"courseID":"1","codePI":"PO-BSINSYS-02.01","curriculumID":"3"},
{"courseID":"2","codePI":"PO-BSINSYS-02.02","curriculumID":"3"}]

我想要的是获取json的各个值,以便稍后将它们分配给我的对象。

E.g。

ArrayList<Curriculum> arrCur = new ArrayList<>();
    for (int x = 0; x < array.size(); x++) {
        Curriculum cur = new Curriculum();
        cur.setCourseID(courseID[x]);
        cur.setCodePO(codePI[x]);
        cur.setCurriculumID(curriculumID[x]);
        arrCur.add(cur);
    }

3 个答案:

答案 0 :(得分:0)

提到“crowder”,你需要解析json。 有几种方法可以做到。

  1. 将您的字符串转换为字符串的低级库 JSONObject是一种地图(带有键“courseID”,“codePO”) 等等)。当时我使用了fastxml,但我在这里看到了一个更新的方法: http://crunchify.com/java-how-to-parse-jsonobject-and-jsonarrays/
  2. 将json直接映射到的高级库     Java业务对象,如“课程”。我自己的经历是     专注于用Spring替换简单的Servlet - 请参阅     例如https://spring.io/guides/gs/rest-service/
  3. 祝你好运

答案 1 :(得分:0)

如果您从javascript发送对象并且如果您上课 -

,则可以使用这种方式
  class Curriculum{
        Integer courseID;
        String codePI;
        Integer curriculumID;
    }

像这样使用 -

String data = request.getParameter("jsonData"); 
JSONArray jsonArray = new JSONArray(data);
java.lang.reflect.Type curriculumType =new com.google.gson.reflect.TypeToken<List<Curriculum>>(){}.getType();

List<Curriculum> curriculum = new GsonBuilder().create().fromJson(jsonArray.toString(), curriculumType);

这将分配课程列表。希望这会对你有所帮助。

答案 2 :(得分:0)

您还可以使用jackson-databind API将您的json转换为java对象。

为Curriculum创建bean。

class Curriculum{
Integer courseID;
String codePI;
Integer curriculumID;
public Integer getCourseID() {
    return courseID;
}
public void setCourseID(Integer courseID) {
    this.courseID = courseID;
}
public String getCodePI() {
    return codePI;
}
public void setCodePI(String codePI) {
    this.codePI = codePI;
}
public Integer getCurriculumID() {
    return curriculumID;
}
public void setCurriculumID(Integer curriculumID) {
    this.curriculumID = curriculumID;
}
}

以下是将json转换为Curriculum对象的代码

JSONArray jsonArray = getJSONArray();

    ObjectMapper objectMapper = new ObjectMapper();
    for(int i =0;i<jsonArray.length();i++){
        JSONObject jsonData = jsonArray.getJSONObject(i);
        //convert json string to object
        try {
            Curriculum curr= objectMapper.readValue(jsonData.toString().getBytes(), Curriculum.class);
            System.out.println(curr);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }