在解析操作之后,JSON中存在Null会中断

时间:2016-05-25 15:49:53

标签: java json null

我正在测试我编写的一些JSON代码。

JSON生成一个字符串,如:

{"UUID":"fd467fde-4eb9-4b4a-9b9a-674e5b9d4944","SLIDE":3,"SLIDE_ITERATION":3,"QUESTION":3,"ABC":1,"GOOD_MEH_BAD":2,"TEXT":"a","TIME_RECEIVED":23}

如上所示,当没有将空值写入JSON时,会传递以下测试(调试表明所有值都已成功转换为JSON)。

assertEquals(outputFeedback.getTEXT(), testText); /** If anything but null the text should be interprted - acts as flag for text input.*/
assertTrue(outputFeedback.getTIME_RECEIVED() == exampleTime);

但是,当JSON(“TEXT”字段)中包含空值时,长“TIME_RECEIVED”在相同的解析操作后保持不变。

JSON:

{"UUID":"03b3236a-326f-4b3b-85e4-8171b2f08b36","SLIDE":3,"SLIDE_ITERATION":3,"QUESTION":3,"ABC":1,"GOOD_MEH_BAD":2,"TIME_RECEIVED":23}

第二次测试失败:

        assertNull(outputFeedback.TEXT); /** If anything but null the text should be interprted - acts as flag for text input.*/
    assertTrue(outputFeedback.getTIME_RECEIVED() == exampleTime);

因为变量是:

outputFeedback = {SingleFeedback@4174} 
 ABC = 1
 GOOD_MEH_BAD = 2
 QUESTION = 3
 SLIDE = 3.0
 SLIDE_ITERATION = 3
 TEXT = null
 TIME_RECEIVED = -1
 UUID = "03b3236a-326f-4b3b-85e4-8171b2f08b36"
inputFeedback = {SingleFeedback@4156} 
 ABC = 1
 GOOD_MEH_BAD = 2
 QUESTION = 3
 SLIDE = 3.0
 SLIDE_ITERATION = 3
 TEXT = null
 TIME_RECEIVED = 23
 UUID = "03b3236a-326f-4b3b-85e4-8171b2f08b36"

我做错了什么?

以下JSON代码:

public static String FeedbackJSONGenerate(SingleFeedback feedback){
    JSONObject obj = new JSONObject();
    try {
    obj.put("UUID", feedback.getUUID());
    obj.put("SLIDE", feedback.getSLIDE());
    obj.put("SLIDE_ITERATION", feedback.getSLIDE_ITERATION());
    obj.put("QUESTION", feedback.getQUESTION());
    obj.put("ABC", feedback.getABC());
    obj.put("GOOD_MEH_BAD", feedback.getGOOD_MEH_BAD());
    obj.put("TEXT", feedback.getTEXT());
    obj.put("TIME_RECEIVED", feedback.getTIME_RECEIVED());
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return obj.toString();
}

  public static SingleFeedback FeedbackJSONParse(String jsonFeedback) {
      JSONObject obj = new JSONObject();

      try {
          obj = new JSONObject(jsonFeedback) ;
      } catch (JSONException e) {
          e.printStackTrace();
      }

      SingleFeedback feedbackJSONParse = new SingleFeedback();
try{
        feedbackJSONParse.setUUID(obj.getString("UUID"));
        feedbackJSONParse.setSLIDE(obj.getInt("SLIDE"));
        feedbackJSONParse.setSLIDE_ITERATION(obj.getInt("SLIDE_ITERATION"));
        feedbackJSONParse.setQUESTION(obj.getInt("SLIDE_ITERATION"));
        feedbackJSONParse.setABC(obj.getInt("ABC"));
        feedbackJSONParse.setGOOD_MEH_BAD(obj.getInt("GOOD_MEH_BAD"));
        feedbackJSONParse.setTEXT(obj.getString("TEXT"));
        feedbackJSONParse.setTIME_RECEIVED(obj.getLong("TIME_RECEIVED"));
}
catch (JSONException e) {
    e.printStackTrace();
}
      return  feedbackJSONParse;
    }

0 个答案:

没有答案