0
{
 getJobDetailsResult: [
 {
   Client:
  {
    ClientID: 265,
    ClientName: "RETRAVISION (WA) LTD"
  },
   ConsignmentActive: true,
   ConsignmentCreationDate: "6/06/2012",
   ConsignmentCustRef: "855929",
   ConsignmentID: 304005,
   OrderNo: "20807354",
  ShipTo:
  {
    ShipToAddress1: "c/o HELENWAY ",
    ShipToAddress2: "WHS E4 UNIT 12 MARKET CITY ",
    ShipToCity: "CANNINGVALE",
    ShipToContactName: null,
    ShipToId: 18933,
    ShipToName: "DALWALLINU RETRAVISION 2",
    ShipToPCode: "6155",
    ShipToState: "WA"
   }
}
]
}

こんにちは、私は現在 Android を使用して JSON を取得しようとしていますが、これまでのところ問題はありませんでした。ただし、小さな問題が 1 つあります。それは、Consignment クラスが参照するオブジェクト、つまり ShipTo クラスと Client クラスの取得に関係しています。

これまでのところ、ConsignmentActive、ConsignmentCreationDate、ConsignmentCustRef、ConsignmentID、OrderNo などの委託値を取得できています。ただし、ShipTo と Client からアイテムをマッピングする方法がわかりません。

これは、メソッドで実行しようとしている現在のコードです:-

public Consignments getConsignmentManifest(String consignment)
{
    Consignments con = new Consignments();

    try
    {
        DefaultHttpClient client = new DefaultHttpClient();
        String theString = new String("");
        //http get request
        HttpGet request = new HttpGet(POD_URI + "/getJobDetails/" + consignment);
        //set the hedear to get the data in JSON format
        request.setHeader("Accept", "application/json");
        request.setHeader("Content-type", "application/json");

        //get the response
        HttpResponse response = client.execute(request);
        HttpEntity entity = response.getEntity();
        InputStream is = entity.getContent();
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));

        StringBuilder builder = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null)
        {
            builder.append(line);
        }
        is.close();

        theString = builder.toString();

        JSONObject conJSON = new JSONObject(theString);
        JSONArray cons = conJSON.getJSONArray("getJobDetailsResult");

        for(int i = 0; i < cons.length(); i++)
        {
            JSONObject cObj = cons.getJSONObject(i);
            con.ConsignmentID = cObj.getInt("ConsignmentID");
            con.ConsignmentCreationDate = cObj.getString("ConsignmentCreationDate");
            con.ConsignmentCustRef = cObj.getString("ConsignmentCustRef");
            con.OrderNo = cObj.getString("OrderNo");
            con.ConsignmentActive = cObj.getBoolean("ConsignmentActive");

        }
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

    return con;
}

ここから ShipTo オブジェクトを取得する方法を知りたいです。私はこの種のものを試しましたが、例外があります:-

con.Clients.ClientID = con.getint("ClientID");

誰かがこれを改善する方法を教えてもらえますか? すべての助けに感謝します。ありがとうございました。

編集:私はすでに問題を理解しています。コードは次のとおりです。

//Client object
                Clients cl = new Clients();
                cl.ClientId = clObj.getInt("ClientID");
                cl.ClientName = clObj.getString("ClientName");
                con.Clients = cl;

                //ShipTo object
                JSONObject stObj = cObj.getJSONObject("ShipTo");
                ShipTo sto = new ShipTo();
                sto.ShipToId = stObj.getInt("ShipToId");
                sto.ShipToName = stObj.getString("ShipToName");
                sto.ShipToAddress1 = stObj.getString("ShipToAddress1");
                sto.ShipToAddress2 = stObj.getString("ShipToAddress2");
                sto.ShipToCity = stObj.getString("ShipToCity");
                sto.ShipToPostcode = stObj.getString("ShipToPCode");
                sto.ShipToState = stObj.getString("ShipToState");
                con.ShipTo = sto;

3 つのオブジェクトすべて。Android の Consignment、ShipTo、および Clients オブジェクトにデータが入力されるようになりました。

4

1 に答える 1

0

まず、次のように応答を解析します

String response = EntityUtils.toString(response.getEntity());

応答を取得した後、次のように応答からjsonオブジェクトを作成します

JSONObject json = new JSONObject(response);

このような最終結果を得ることができます

    String result1 = ((JSONArray) json.get("ShipTo")).getJSONObject(0)
        .getString("ShipToAddress1");
String result2 = ((JSONArray) json.get("ShipTo")).getJSONObject(0)
        .getString("ShipToAddress2");

これを試してみてください、それは動作します。

于 2013-03-13T07:58:33.303 に答える