2017-11-10 4 views
0

写真Excelのデータ、行および列。任意の列でASCまたはDESCのいずれかを並べ替えることができます。Java表形式のデータをソートしてJSONに出力しますか?

Java内でこの機能を複製し、JSONにデータを出力することを検討しています。このJSONデータは、クエリ可能なAPI内に配置され、特定の列名に基づいてソートされた表形式のデータを返します。

これにはどのような方法が最適ですか?

JTableはヘルプhttps://docs.oracle.com/javase/tutorial/uiswing/components/table.html#sortingのように見えますが、現在このデータをJSONオブジェクトにフィルタリングする方法は不明です。

任意のポインタ/思考?

答えて

0

下記の私の例を参照してください。私は以下のGSON依存関係を使用して、VectorをJSON文字列に変換しています。そして、JTable.convertRowIndexToModel()APIを使用して正しい順序でテーブル行を取得しました。

<dependency> 
    <groupId>com.google.code.gson</groupId> 
    <artifactId>gson</artifactId> 
    <version>2.6.2</version> 
</dependency> 

public class TableDataToJson { 

    public static void main(String[] args) { 

    JFrame frame = new JFrame("Table data to JSON"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    final DefaultTableModel tableModel = new DefaultTableModel(
     new Object[][] {{"Sugar", 14}, {"Eggs", 8}, {"Butter", 12}, {"Flour", 10}}, 
     new Object[] {"Item name", "Price"}) { 

     @Override 
     public Class<?> getColumnClass(int columnIndex) { 
     if (columnIndex == 1) { 
      return Integer.class; 
     } 
     return super.getColumnClass(columnIndex); 
     } 
    }; 
    final JTable table = new JTable(tableModel); 
    table.setAutoCreateRowSorter(true); 

    JButton button = new JButton("Print JSON"); 
    button.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
     Vector vectorInModelOrder = tableModel.getDataVector(); 
     Vector vectorInViewOrder = new Vector(); 
     for (int i = 0; i < vectorInModelOrder.size(); i++) { 
      vectorInViewOrder.add(vectorInModelOrder.get(table.convertRowIndexToModel(i))); 
     } 

     Gson gson = new Gson(); 
     System.out.println(gson.toJson(vectorInViewOrder)); 
     } 
    }); 

    frame.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER); 
    frame.getContentPane().add(button, BorderLayout.SOUTH); 
    frame.pack(); 
    frame.setVisible(true); 
    } 
} 
関連する問題