我正在使用fastxml库,我有以下内容:
public class Test {
public String value;
}
...
import java.io.IOException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static final ObjectMapper mapper = new ObjectMapper();
public static void main(String[] args) throws IOException {
String json = "{\"value\":\"foo\"}";
Test t = mapper.readValue(json, Test.class);
}
}
是否可以限制value
可能的值?
例如,如果JSON为“{”value“:”bar“}”,我希望Test t = mapper.readValue(json, Test.class);
抛出异常(或以某种方式指示错误)。
答案 0 :(得分:2)
直接通过FasterXML(杰克逊2),没有。它将进行的唯一验证是可能从JSON类型转换为相应的Java类型。
您可以在用于相应字段的setter中自行进行验证,从而引发运行时异常。例如
JsonDeserializer
您还可以编写一个自定义@Override
protected void onCreate(Bundle savedInstanceState) {
...
SharedPreferences Saved_Settings = getPreferences("Saved_Settings", MODE_PRIVATE);
boolean PU2 = Saved_Settings.getBoolean("PU", false);
// no need to check with if conditions. just set the button with the value(PU2)
chk_box_PU.setChecked(PU2);
}
public void save_settings(View v) {
CheckBox chk_box_PU = (CheckBox) findViewById(R.id.chk_box_PU);
SharedPreferences Saved_Settings = this.getSharedPreferences("Saved_Settings", MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = Saved_Settings.edit();
prefsEditor.putBoolean("PU", chk_box_PU.isChecked());
prefsEditor.commit();
}
来执行验证,并在不适当的值上失败。有一个编写反序列化器here和其他教程的例子。