【问题标题】:How to get attributes in Json String in servlet如何在servlet中获取Json String中的属性
【发布时间】:2017-02-18 03:01:42
【问题描述】:

如何获取 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 的各个值,以便稍后将它们分配给我的对象。

例如

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);
    }

【问题讨论】:

  • 解析JSON,使用解析结果。

标签: javascript java json ajax


【解决方案1】:

正如“crowder”所提到的,您需要解析 json。 有几种方法可以做到这一点。

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

祝你好运

【讨论】:

    【解决方案2】:

    如果你从 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);
    

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

    【讨论】:

      【解决方案3】:

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

      为课程创建 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();
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-24
        • 2015-04-18
        • 1970-01-01
        • 2023-01-06
        • 1970-01-01
        相关资源
        最近更新 更多