我正在使用JavaFX开发JSON数组的通用编辑器。表中的显示方式,列将是键,行中的值将更具描述性。一个JSONObject中可以有不同数量的键。JSON格式:"[{\"key1\": 1, \"key2\": 2}, {\"key1\": 3, \"key2\": 4}]"它需要看起来像这样:| 键1|键2|| - ------|- ------|| 1个|第二章|| 三个|四个|有什么建议吗?
"[{\"key1\": 1, \"key2\": 2}, {\"key1\": 3, \"key2\": 4}]"
zzlelutf1#
这可以分为两部分。1.使用GSON将JSON Array解析为POJOs的Array。1.在TableView中显示Objets的List。
GSON
JSON Array
POJOs
Array
TableView
Objets
List
//Add data to the TableView! String jsonString = "[{\"keyOne\":\"1\", \"keyTwo\":\"2\"}, {\"keyOne\":\"3\", \"keyTwo\":\"4\"}]"; Gson gson = new Gson(); Data[] dataList = gson.fromJson(jsonString, Data[].class); ObservableList<Data> observableList = FXCollections.observableArrayList(dataList); tableView.setItems(observableList);
import com.google.gson.Gson; import javafx.application.Application; import javafx.beans.property.SimpleStringProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.Scene; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.stage.Stage; import javafx.scene.layout.StackPane; public class App extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage stage){ TableView<Data> tableView = new TableView(); TableColumn<Data, String> column1 = new TableColumn<>("Key One"); column1.setCellValueFactory((cdf) -> new SimpleStringProperty(cdf.getValue().getKeyOne())); TableColumn<Data, String> column2 = new TableColumn<>("Key Two"); column2.setCellValueFactory((cdf) -> new SimpleStringProperty(cdf.getValue().getKeyTwo())); tableView.getColumns().add(column1); tableView.getColumns().add(column2); //Add data to the TableView! String jsonString = "[{\"keyOne\":\"1\", \"keyTwo\":\"2\"}, {\"keyOne\":\"3\", \"keyTwo\":\"4\"}]"; Gson gson = new Gson(); Data[] dataList = gson.fromJson(jsonString, Data[].class); ObservableList<Data> observableList = FXCollections.observableArrayList(dataList); tableView.setItems(observableList); Scene scene = new Scene(new StackPane(tableView)); stage.setTitle("JavaFX 13"); stage.setScene(scene); stage.show(); } }
/** * * @author sedj601 */ public class Data { private String keyOne; private String keyTwo; public Data(String keyOne, String keyTwo) { this.keyOne = keyOne; this.keyTwo = keyTwo; } public String getKeyOne() { return keyOne; } public void setKeyOne(String keyOne) { this.keyOne = keyOne; } public String getKeyTwo() { return keyTwo; } public void setKeyTwo(String keyTwo) { this.keyTwo = keyTwo; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("Data{keyOne=").append(keyOne); sb.append(", keyTwo=").append(keyTwo); sb.append('}'); return sb.toString(); } }
module com.mycompany.javafx_test_2 { requires javafx.controls; exports com.mycompany.javafx_test_2; opens com.mycompany.javafx_test_2 to com.google.gson; requires com.google.gson; }
使用GSON版本2.8.9。
1条答案
按热度按时间zzlelutf1#
这可以分为两部分。
1.使用
GSON
将JSON Array
解析为POJOs
的Array
。1.在
TableView
中显示Objets
的List
。使用
GSON
版本2.8.9。