2016-10-09 1 views
0

Как я могу получить каждый атрибут внутри строки Json?Как получить атрибуты в Json String в сервлет

Я получил Json, преобразовывая сначала свой массив объектов в JavaScript через JSON.stringify. Впоследствии я использовал ajax для передачи строки в свой сервлет.

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

Разбираем JSON, используйте разобранный результат. –

ответ

0

Как упоминалось выше, вы должны разобрать json. Существует несколько способов сделать это.

  1. библиотеки низкого уровня, которые преобразуют вашу строку в JSONObject, которая является своего рода карты (с ключами «courseID», «codePO» и т.д.). В то время, когда я использовал quickxml, но я вижу более новый подход: http://crunchify.com/java-how-to-parse-jsonobject-and-jsonarrays/
  2. Библиотеки более высокого уровня, которые отображали бы json непосредственно в Java-бизнес. Такие объекты, как «Учебная программа». Мой собственный опыт был сосредоточен на замену простого сервлета Spring - см например https://spring.io/guides/gs/rest-service/

удачи

0

Вы можете использовать этот способ, если вы отправляете Arry объекта из яваскрипта и если вы класс -

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

Это назначит список учебной программы. Надеюсь, что это поможет вам.

0

Вы также можете использовать API-интерфейс jackson-databind для преобразования json-объекта в java-объект.

Создайте свой компонент для учебной программы.

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(); 
     } 
    } 
Смежные вопросы