Jason
Jason

Reputation: 364

Converting from a String to JSONArray

I have this JSONArray data and within it, there is a single object. The prop element in this object contains a String that looks like a Json response as shown below. How can I iterate through all that String possibly come up with a JSONArray? I am aware that the response I am getting is not an array, but I have no control over that.

 "data": [
        {
           "prop": "{\"Name\":\"StockoutTransferDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"LoadBearing\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCBOOLEAN\",\"value\":true},\"Unit\":\"$\"},{\"Name\":\"StockoutDeliveryDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"Status\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"OnTransport\"},\"Unit\":\"$\"},{\"Name\":\"Tracked\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"true\"},\"Unit\":\"$\"},{\"Name\":\"StockoutReturnDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"IsExternal\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCBOOLEAN\",\"value\":false},\"Unit\":\"$\"},{\"Name\":\"PlannedStockoutDeliveryDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"10-03-2019\"},\"Unit\":\"$\"},{\"Name\":\"StockinReturnLocation\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"PlannedAssemblyDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"27-04-2019\"},\"Unit\":\"$\"},{\"Name\":\"StockoutTransferLocation\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"StockinReturnDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"FabricatedLocation\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"StockinArrivalLocation\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"StockinTransferDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"Reference\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCIDENTIFIER\",\"value\":\"300 x 350\"},\"Unit\":\"$\"},{\"Name\":\"PlannedStockinArrivalDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"11-03-2019\"},\"Unit\":\"$\"},{\"Name\":\"PlannedFabricatedDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"01-03-2019\"},\"Unit\":\"$\"},{\"Name\":\"AssemblyDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"Slope\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCPLANEANGLEMEASURE\",\"value\":\"0\",\"orig_value\":\"0.\"},\"Unit\":\"$\"},{\"Name\":\"FabricatedDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"StockoutReturnLocation\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"Span\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCPOSITIVELENGTHMEASURE\",\"value\":\"4750\",\"orig_value\":\"4750.\"},\"Unit\":\"$\"},{\"Name\":\"StockinArrivalDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"StockoutDeliveryLocation\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"Status\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"Assembled\"},\"Unit\":\"$\"}"
        }
    ],

The snippet of my code is:

JSONArray jsonArray = response.getJSONArray("data");
JSONObject data = jsonArray.getJSONObject(0);
String prop = data.getString("prop");
JSONArray jsonArray1 = new JSONArray(prop);

I am getting the error org.json.JSONException: Value {"Name":"StockTransferLocation","Description":"$","NominalValue":{"type":"IFCTEXT","value":"East"},"Unit":"$"} of type org.json.JSONObject cannot be converted to JSONArray

Thanks in advance!

Upvotes: 1

Views: 122

Answers (1)

Prateek Kumar
Prateek Kumar

Reputation: 351

Just add a square bracket to the start and end of the String, and then try to convert it to JSONArray.

"data": [
            {
               "prop": "[{\"Name\":\"StockoutTransferDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"LoadBearing\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCBOOLEAN\",\"value\":true},\"Unit\":\"$\"},{\"Name\":\"StockoutDeliveryDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"Status\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"OnTransport\"},\"Unit\":\"$\"},{\"Name\":\"Tracked\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"true\"},\"Unit\":\"$\"},{\"Name\":\"StockoutReturnDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"IsExternal\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCBOOLEAN\",\"value\":false},\"Unit\":\"$\"},{\"Name\":\"PlannedStockoutDeliveryDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"10-03-2019\"},\"Unit\":\"$\"},{\"Name\":\"StockinReturnLocation\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"PlannedAssemblyDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"27-04-2019\"},\"Unit\":\"$\"},{\"Name\":\"StockoutTransferLocation\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"StockinReturnDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"FabricatedLocation\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"StockinArrivalLocation\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"StockinTransferDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"Reference\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCIDENTIFIER\",\"value\":\"300 x 350\"},\"Unit\":\"$\"},{\"Name\":\"PlannedStockinArrivalDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"11-03-2019\"},\"Unit\":\"$\"},{\"Name\":\"PlannedFabricatedDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"01-03-2019\"},\"Unit\":\"$\"},{\"Name\":\"AssemblyDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"Slope\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCPLANEANGLEMEASURE\",\"value\":\"0\",\"orig_value\":\"0.\"},\"Unit\":\"$\"},{\"Name\":\"FabricatedDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"StockoutReturnLocation\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"Span\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCPOSITIVELENGTHMEASURE\",\"value\":\"4750\",\"orig_value\":\"4750.\"},\"Unit\":\"$\"},{\"Name\":\"StockinArrivalDate\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"StockoutDeliveryLocation\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"\"},\"Unit\":\"$\"},{\"Name\":\"Status\",\"Description\":\"$\",\"NominalValue\":{\"type\":\"IFCTEXT\",\"value\":\"Assembled\"},\"Unit\":\"$\"}]"
            }
        ],

Upvotes: 2

Related Questions