2017-03-20 25 views
-2

json配列を含むjsonオブジェクトがあります。ここではjsonオブジェクトです複数の配列を含むJSONオブジェクト

{ 
"dataset": { 
    "id": 11304240, 
    "dataset_code": "teste", 
    "database_code": "LBMA", 
    "name": "testse: London Fixing", 
    "description": "test", 
    "refreshed_at": "2017-03-17T16:50:32.330Z", 
    "newest_available_date": "2017-03-17", 
    "oldest_available_date": "1968-01-02", 
    "column_names": ["Date", "USD (AM)", "USD (PM)", "GBP (AM)", "GBP (PM)", "EURO (AM)", "EURO (PM)"], 
    "frequency": "daily", 
    "type": "Time Series", 
    "premium": false, 
    "limit": 1, 
    "transform": null, 
    "column_index": null, 
    "start_date": "1968-01-02", 
    "end_date": "2017-03-17", 
    "data": [ 
     ["2017-03-17", 1228.75, 1229.6, 991.85, 994.25, 1140.53, 1144.27] 
     ["2017-03-16", 1228.79, 1228.6, 992.85, 994.25, 1140.53, 1144.27] 
    ], 
    "collapse": null, 
    "order": null, 
    "database_id": 139 
} 
} 

私は異なる文字列と二重変数にデータ配列の最初の行を抽出する必要があります。

これまでのところ私の解決策です。私はデータメッセージを取得していません。

try { 
       JSONObject jsonObj = new JSONObject(jsonStr); 


       // Getting JSON Array node 
       JSONArray data = jsonObj.getJSONArray("data"); 
       //JSONObject contacts = jsonArray.getJSONArray("contacts"); 

       // looping through All Contacts 


        JSONArray js=data.getJSONArray(0); 

        for (int i = 0; i <js.length(); i++) { 

        JSONObject c = js.getJSONObject(i); 

        String id = c.getString("date"); 
        String name = c.getString("USD (AM)"); 
        String email = c.getString("USD (Pm)"); 

        // tmp hash map for single contact 
        HashMap<String, String> contact = new HashMap<>(); 

        // adding each child node to HashMap key => value 
        contact.put("date", date); 
        contact.put("USD (AM)", am); 
        contact.put("USD (PM)", pm); 


        // adding contact to contact list 
        contactList.add(contact); 
       } 

URLから文字列としてjsonオブジェクトを取得していますが、どのように変数を抽出できますか?ここ

は私の予想結果

date = "2017-03-17" 
am = 1228.75 
pm = 1229.6 
+1

'データ 'に入る前に' dataset'に入る必要はありませんか? – ajb

+0

私はまずそれに入る必要がありますか? – msafran

+0

はい、私はそう信じています。あなたが与えたオブジェクトには、「データセット」というフィールドが1つしかありません。そのフィールドの値は、他のすべてのフィールドを持つ入れ子オブジェクトです。しかし、私は 'jsonObject'メソッドはあなたが与えたオブジェクト内のフィールドだけを見ていると思います。ネストされたフィールドを深く検索することはありません。 – ajb

答えて

0

まず第一には、あなたのビジネスモデルが必要として、あなたは、あなたの変数を処理するためにクラスが必要な場合があります。

のようなもの:あなたは文字列を受け取り、あなたが表示されたコードを使用してDataVoのリストにそれを解析するために、独自のサービスを作成することができます

public class DataVo { 
    private Date date; 
    private Double am; 
    private Double pm; 

    // getters/setters 
} 

を。

またはGsonのようなライブラリを使用して、カスタムのシリアライザ/デシリアライザを作成してデータ変換を解決できます。

+0

私はこれを試していただきありがとうございます。他のソリューションを歓迎しています。 – msafran

0

は... @AJBと、それは今働いて@cleitonありがとう:)

JSONObject jsonObj = new JSONObject(jsonStr); 

       JSONObject dataset = jsonObj.getJSONObject("dataset"); 

       // Getting JSON Array node 
       JSONArray data = dataset.getJSONArray("data"); 
       //JSONObject contacts = jsonArray.getJSONArray("contacts"); 

       // looping through All Contacts 


        JSONArray js=data.getJSONArray(0); 

        String date = js.getString(0); 
        String am = js.getString(1); 
        String pm =js.getString(2); 


       HashMap<String, String> contact = new HashMap<>(); 

       // adding each child node to HashMap key => value 
       contact.put("date", date); 
       contact.put("USD (AM)", am); 
       contact.put("USD (PM)", pm); 

       contactList.add(contact); 
+0

素晴らしい!どういたしまして。 – CleitonCardoso

-1

必要な変数を格納するためのオブジェクトを作成します!

+0

このような答えには、より多くの説明や例が必要です。 – ajb

+0

すみません、私はあなたがオブジェクトを作成することを知っていたと思います –

関連する問題