Parse Json sang Object Java

em thử parse String Json này:

{"testId": 11, "questions": "[{\"questionId\": 1, \"answerId\": 1}]"}

đoạn xử lý :

ObjectMapper objMapper=new ObjectMapper();
System.out.print(result);
SurveyResponseResult survey = objMapper.readValue(result, SurveyResponseResult.class);
System.out.print(survey +"anv");
String prettyStaff1 = objMapper.writerWithDefaultPrettyPrinter().writeValueAsString(survey);
System.out.print(prettyStaff1);

class SurveyResponseResult :

public class SurveyResponseResult {
	private int testId;
	private SurveyQuestionAnswer questions;
	public SurveyQuestionAnswer getQuestions() {
		return questions;
	}
	public void setQuestions(SurveyQuestionAnswer questions) {
		this.questions = questions;
	}
	public int getTestId() {
		return testId;
	}
	public void setTestId(int testId) {
		this.testId = testId;
	}
	
	
	public SurveyResponseResult(int testId, SurveyQuestionAnswer questions) {
		super();
		this.testId = testId;
		this.questions = questions;
	}

	

	@Override
	public String toString() {
		return "SurveyResponseResult [questions=" + questions + ", testId="
				+ testId + "]";
	}
	public SurveyResponseResult() {
		super();
		// TODO Auto-generated constructor stub
	}



	public class SurveyQuestionAnswer {
		int questionId;
		int answerId;
		public int getQuestionId() {
			return questionId;
		}
		public void setQuestionId(int questionId) {
			this.questionId = questionId;
		}
		public int getAnswerId() {
			return answerId;
		}
		public void setAnswerId(int answerId) {
			this.answerId = answerId;
		}
		@Override
		public String toString() {
			return "SurveyQuestionAnswer {answerId=" + answerId + ", questionId="
					+ questionId + "}";
		}
		public SurveyQuestionAnswer(int questionId, int answerId) {
			super();
			this.questionId = questionId;
			this.answerId = answerId;
		}
		public SurveyQuestionAnswer() {
			
		}

	}
}

nhưng kết quả lại ra như thế này :

{"testId" : 11, "questions" : {"questionId" : 0,"answerId" : 0 }}

em đã làm sai từ chỗ nào vậy ạ.

Thôi, dùng gson cho lành :smile:

chỗ questions[]. nó lại có mấy cái \ mà dùng Gson nó báo lỗi

chỗ questions[]. nó lại có mấy cái \ mà dùng Gson nó báo lỗi

Ừa, đúng là chuỗi json không đúng chuẩn.
Mà bạn lấy chuỗi json đó từ đâu ra vậy? Tại sao lại vừa có escape vừa có unescape như thế?

1 Like
var resultObject={
	   testId:{},
	   questions:[]
	}   

function answerAs(q,a){

resultObject.questions.push({questionId:q, answerId: a});
	}

đây là function mà tạo ra chỗ questions.

jQuery('#survey').find('.btn-finish').click(function(){
	var data= JSON.stringify(resultObject);
	console.log(data);
	save(data);
});



<h:form>
		<a:jsFunction name="save" action="#{surveyResponsesHome.save}">
			<f:param name="data" value="#{surveyResponsesHome.result}" />
		</a:jsFunction>
	</h:form>

Ý bạn muốn là: “Cái mảng của tôi biến đâu mất tiêu rồi?”

Xem chuỗi json ban đầu, đúng là mất chuẩn json rồi, sao cái mảng kia lại “biến” thành chuỗi cơ chứ?

Và còn lý do nữa: bên Java, sao lớp SurveyQuestionAnswer là đối tượng đơn, đáng lẽ ra, nó phải là mảng hoặc List.

1 Like

Gson mà lỗi thì class khai báo sai hoặc chuỗi json lỗi :slight_smile:. Sửa 2 cái này cho đúng chứ đừng tự parse

từ client e gửi lên server nên e parse sang var data= JSON.stringify(resultObject); để gửi.
nhưng chỗ e parse nó sang String thì làm sai chuẩn json

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?