Я работаю над калькулятором расходов. Раньше у меня был рабочий XML-выход, который не печатал строки. Я думаю, что что-то перепуталось, может быть, редактор не видит, как linebreak становится линейной ошибкой, не знаю.Довольно вывод всегда « r n»
Но когда я сохраняю свои расходы, я получаю очень некрасиво выход:
"[ {\r\n \"title\" : \"2\",\r\n \"category\" : \"[None]\",\r\n \"period\" : \"Year\",\r\n \"value\" : \"2\"\r\n}, {\r\n \"title\" : \"3\",\r\n \"category\" : \"[None]\",\r\n \"period\" : \"Year\",\r\n \"value\" : \"3\"\r\n} ]"
Если я смотрю на консоли (делает оттиск там), я получаю то, что я хочу:
[ { "title" : "2", "category" : "[None]", "period" : "Year", "value" : "2" }, { "title" : "3", "category" : "[None]", "period" : "Year", "value" : "3" } ]
в настоящее время мой код довольно прост:
ObservableList<Expense> expenseList = FXCollections.observableArrayList();
//The list gets edited by a TableView.
final ObjectMapper mapper = new ObjectMapper();
final String s = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(expenseList);
FileOutputStream fos = new FileOutputStream(path);
OutputStreamWriter outputFile = new OutputStreamWriter(fos, Charset.forName("UTF8"));
mapper.writeValue(outputFile, s);
Это как класс сущности выглядит:
public class Expense {
private StringProperty title = new SimpleStringProperty();
private StringProperty category = new SimpleStringProperty();
private StringProperty period = new SimpleStringProperty();
private StringProperty value = new SimpleStringProperty();
public void setTitle(String title) {
this.title.set(title);
}
public void setCategory(String category) {
this.category.set(category);
}
public void setPeriod(String period) {
this.period.set(period);
}
public void setValue(String value) {
this.value.set(value);
}
public Expense() {} //Default constructor is needed for XML-handling
public Expense(String title, String value, String period, String category) {
this.title = new SimpleStringProperty(title);
this.value = new SimpleStringProperty(value);
this.period = new SimpleStringProperty(period);
this.category = new SimpleStringProperty(category);
}
public String getTitle() {
return this.title.get();
}
public String getCategory() {
return this.category.get();
}
public String getPeriod() {
return this.period.get();
}
public String getValue() {
return this.value.get();
}
public StringProperty titleProperty() {
return this.title;
}
public StringProperty categoryProperty() {
return this.category;
}
public StringProperty periodProperty() {
return this.period;
}
public StringProperty valueProperty() {
return this.value;
}
}
Я пытался получить каждый в списке и преобразовать его в строку JSON -> CONCAT этом большой одну строку, которую я распечатаны. Тем не менее, тот же результат.
Похоже, вы встраивание JSON строк внутри другой строки, скорее всего, в коде, не показаны. –
@PeterLawrey Я добавил информацию о выходных потоках, если это поможет. – codepleb