I want to split the value 08:41:19 from below json response. How to split the value?
{
"parameters": [
{
"name": "CurrentLocalTime",
"value": "2019-05-29 08:41:19",
"dataType": 4,
"parameterCount": 1,
"message": "Success"
}
],
"statusCode": 200
}
Try this,
JSONArray jSONArray = inputJSON.getJSONArray("parameters");
int length = jSONArray.length();
for (int i = 0; i < length; i++) {
JSONObject jSONObject= jSONArray.getJSONObject(i);
System.out.println(jSONObject.get("value").split("\\s")[1]);
}
Related
I get the request but i can't get the jsonarray from json object.
JSONObject ob = JSONObject.fromObject(response.toString());
JSONArray arr = ob.getJSONArray("results");
for (int i = 0; i < arr.size(); i++) {
JSONObject jsonAuth = arr.getJSONObject(i);
String PREFIX = jsonAuth.get("PREFIX").toString();
}
my json:
{
"d": {
"results": [{
"__metadata": {
"type": "ceodo.cco.loc_do.OdataV2.SecuenciasType",
"uri": "com:443/ceodo/cco/loc_do/OdataV2.xsodata/Secuencias('d76fffbe-8c3b-4c66-bd7f-16c9d099d143')"
},
"SEC_ID": "d76fffbe-8c3b-4c66-bd7f-16c9d099d143",
"PREFIX": "B",
"TIPO_NCF": "01",
"NUM_FROM": 50,
"NUM_TO": 100,
"NUM_CURRENT": 25,
"VALID_UNTIL": "\/Date(1556582400000)\/",
"CAJA": "b1c913fc-e319-476f-8295-64782b77de52"
}, {
"__metadata": {
"type": "ceodo.cco.loc_do.OdataV2.SecuenciasType",
"uri": "com:443/ceodo/cco/loc_do/OdataV2.xsodata/Secuencias('f3323600-6bf2-4e90-8856-56390595d748')"
},
"SEC_ID": "f3323600-6bf2-4e90-8856-56390595d748",
"PREFIX": "B",
"TIPO_NCF": "02",
"NUM_FROM": 1,
"NUM_TO": 100,
"NUM_CURRENT": 35,
"VALID_UNTIL": "\/Date(1554249600000)\/",
"CAJA": "c90030fb-030b-4a99-929a-adc72eaf082f"
}]
}
}
Well, you can call the 'd' object first.
The sequence of your json file should be from a d(JSONObject) tag to a results(JSONArray) tag.
Here is code by using another json library
import org.json.JSONArray;
import org.json.JSONObject;
... skip ...
//JSONObject ob = JSONObject.fromObject(resBuf.toString());
JSONObject ob = new JSONObject(resBuf.toString());
if(ob.has("d"))
{
JSONObject dobj = ob.getJSONObject("d");
if(dobj.has("results"))
{
JSONArray arr = dobj.getJSONArray("results");
System.out.println(arr.length());
for (int i = 0; i < arr.length(); i++) {
JSONObject jsonAuth = arr.getJSONObject(i);
String PREFIX = jsonAuth.get("PREFIX").toString();
System.out.println(PREFIX);
}
}
}
I have been using the the Json library to try and parse the following Json data:
{"dailygameschedule": {
"lastUpdatedOn": "2016-12-19 12:32:56 AM",
"gameentry": [
{
"id": "37705",
"date": "2016-04-03",
"time": "1:30PM",
"awayTeam": {
ID: "133",
City: "St. Louis",
Name: "Cardinals"
Abbreviation: "STL"
},
"homeTeam": {
"ID": "132",
"City": "Pittsburgh",
"Name": "Pirates",
"Abbreviation": "PIT"
},
"location": "PNC Park"
},
...
]
}
I cant figure out how to get the "gameentry" array. I was looking at other threads for guidance but it is not quite working for me. Heres what I have so far:
JSONObject obj = new JSONObject(todaysGames);
String pageName = obj.getJSONObject("dailygameschedule").getString("lastUpdatedOn");
System.out.println("2 asdfasdf "+ pageName);
JSONArray arr = obj.getJSONArray("gameentry");
for (int i = 0; i < arr.length(); i++)
{
//String post_id = arr.getJSONObject(i).getString("id");
System.out.println(arr.getJSONObject(i).getString("awayTeam.ID"));
}
There error that im getting is:
Exception in thread "main" org.json.JSONException:
JSONObject["gameentry"] not found.
Thanks!
Try this,
JSONArray arr=obj.getJSONObject("dailygameschedule").getJSONArray("gameentry");
for (int i = 0; i < arr.length(); i++)
{
JSONObject obj = arr.getJSONObject(i);
String id = obj.getString("id");
JSONObject awayTeam_obj=obj.getJSONObject("awayTeam");
String awayTeam_ID = awayTeam_obj.getString("ID");
String awayTeam_City = awayTeam_obj.getString("City");
String awayTeam_Name = awayTeam_obj.getString("Name");
JSONObject homeTeam_obj=obj.getJSONObject("homeTeam");
String homeTeam_ID = homeTeam_obj.getString("ID");
String homeTeam_City = homeTeam_obj.getString("City");
String homeTeam_Name = homeTeam_obj.getString("Name");
}
gameentry array is a member of dailygameschedule object, so you need to access it first.
JSONArray arr = obj.getJSONObject("dailygameschedule").getJSONArray("gameentry");
for (int i = 0; i < arr.length(); i++)
{
//String post_id = arr.getJSONObject(i).getString("id");
System.out.println(arr.getJSONObject(i).getString("awayTeam.ID"));
}
That's not a valid JSON object, Just add '}' and gameentry not a root element you should get dailygamesschedule first and then get the gameentry
I'm trying to parse a JSON object in java :
{
"poster_path": "/e3QX3tY0fBR1GuxdP0mwpN16cqI.jpg",
"adult": false,
"overview": "In 1950s Pittsburgh, a frustrated African-American father struggles with the constraints of poverty, racism, and his own inner demons as he tries to raise a family.",
"release_date": "2016-12-16",
"genre_ids": [
18
],
"id": 393457,
"original_title": "Fences",
"original_language": "en",
"title": "Fences",
"backdrop_path": "/jNlCIAcheh0iOuL3kz9x1Wq9WLG.jpg",
"popularity": 10.976374,
"vote_count": 290,
"video": false,
"vote_average": 6.7
},
But I get a JSONException when I try to access the values for poster_path(org.json.JSONException: No value for poster_path) and release_date(org.json.JSONException: No value for release_date)
ArrayList<MovieModel> results = new ArrayList<MovieModel>();
String streamAsString = result;
try{
JSONObject jsonObject = new JSONObject(streamAsString);
JSONArray array = (JSONArray) jsonObject.get("results");
for (int i = 0; i < array.length(); i++) {
JSONObject c = array.getJSONObject(i);
JSONObject jsonMovie = array.getJSONObject(i);
MovieModel movieModel= new MovieModel();
movieModel.setMovieTitle(jsonMovie.getString("title"));
movieModel.setMovieGenre("na");;
String strImgURL=jsonObject.getString("poster_path").substring(2);
movieModel.setImgURL("");
movieModel.setMovieYear(jsonObject.getString("release_date"));
results.add((movieModel));
}
}
catch(JSONException j)
{
System.err.println(j);
Log.d(DEBUG_TAG, "Error parsing JSON. String was: " + j.toString());
}
Not sure what could be causing this error
You're trying to get the poster_path and release_date values from the outer JSONObject, the one that has everything (including the JSONArray that contains the individual movies).
In the loop, just use jsonMovie instead of jsonObject:
for (int i = 0; i < array.length(); i++) {
JSONObject jsonMovie = array.getJSONObject(i);
MovieModel movieModel= new MovieModel();
movieModel.setMovieTitle(jsonMovie.getString("title"));
movieModel.setMovieGenre("na");
String strImgURL=jsonMovie.getString("poster_path").substring(2);
movieModel.setImgURL("");
movieModel.setMovieYear(jsonMovie.getString("release_date"));
results.add((movieModel));
}
I am getting the following as a String response from a webserveice:
[
[
{
"dgtype": "adhoc",
"subtypename": "Person",
"subtypedesc": "null",
"summary": "Junaid (Self)",
"subtype": "person",
"birthdate": "1995-1-23 ",
"name": "Junaid (Self)"
},
{
"dgtype": "adhoc",
"subtypename": "Job",
"subtypedesc": "null",
"summary": "Exa",
"subtype": "person",
"birthdate": "2010-01-30",
"name": "Junaid (Self)"
}
]
]
In Java I am trying to do the following:
JSONArray jArray = new JSONArray(result);
System.out.println("Response: "+jArray);
for(int i = 0; i<= jArray.length(); i++){
try {
JSONObject oneObject = jArray.getJSONObject(i);
String dgtype = oneObject.getString("dgtype");
String subtypename = oneObject.getString("subtypename");
String subtypedesc = oneObject.getString("subtypedesc");
String summary = oneObject.getString("summary");
String subtype = oneObject.getString("subtype");
String birthdate = oneObject.getString("birthdate");
String name = oneObject.getString("name");
System.out.println(i);
System.out.println("dgtype: "+dgtype);
System.out.println("subtypename: "+subtypename);
System.out.println("subtypedesc: "+subtypedesc);
System.out.println("summary: "+summary);
System.out.println("subtype: "+subtype);
System.out.println("birthdate: "+birthdate);
System.out.println("name: "+name);
} catch (JSONException e) {
System.out.println("JSON Exception: "+e);
}
}
However I am getting the following exception:
JSON Exception: org.json.JSONException: Value
[
{
"dgtype": "adhoc",
"subtypename": "Person",
"subtypedesc": "null",
"summary": "Junaid (Self)",
"subtype": "person",
"birthdate": "1995-1-23 ",
"name": "Junaid (Self)"
},
{
"dgtype": "adhoc",
"subtypename": "Job",
"subtypedesc": "null",
"summary": "Exa",
"subtype": "person",
"birthdate": "2010-01-30",
"name": "Junaid (Self)"
}
]
at 0 of type org.json.JSONArray cannot be converted to JSONObject
JSON Exception: org.json.JSONException: Index 1 out of range [0..1)
I am following this example. Where am I going wrong? Also notice the missing long brackets in the exception snippet.
You have two arrays, one is within another:
[
[
//Your objects
]
]
You could either change data format so it only has one array, or modify your code:
JSONArray outer = new JSONArray(result);
JSONArray jArray = outer.getJSONArray(0);
jArray JSONArray contain another JSONArray which contain JSONObeject so first get JSONArray and then get all JSONObject from it:
JSONArray oneArray = jArray.getJSONArray(i);
for(int j = 0; j<= oneArray.length(); j++){
JSONObject oneObject = oneArray.getJSONObject(j);
// get dgtype,subtypename,subtypedesc,.. from oneObject
}
As it says, 'JSONArray cannot be converted to JSONObject', You have an array in another array, so
JSONArray jArray1 = new JSONArray(result);
then
JSONArray jArray = jArray1.getJSONArray(0);
Now it will work.
for(int i = 0; i<= jArray.length(); i++){
final JSONArray innerArray = jArray.getJSONArray(i);
for (int a = 0; a < innerArray.length(); a++) {
try {
final JSONObject oneObject = innerArray.getJSONObject(i);
String dgtype = oneObject.getString("dgtype");
String subtypename = oneObject.getString("subtypename");
String subtypedesc = oneObject.getString("subtypedesc");
String summary = oneObject.getString("summary");
String subtype = oneObject.getString("subtype");
String birthdate = oneObject.getString("birthdate");
String name = oneObject.getString("name");
System.out.println(i);
System.out.println("dgtype: "+dgtype);
System.out.println("subtypename: "+subtypename);
System.out.println("subtypedesc: "+subtypedesc);
System.out.println("summary: "+summary);
System.out.println("subtype: "+subtype);
System.out.println("birthdate: "+birthdate);
System.out.println("name: "+name);
} catch (JSONException e) {
System.out.println("JSON Exception: "+e);
}
}
}
I'm having some trouble with parsing an FQL multiquery for Facebook. I don't know how I need to handle the JSONArray with the same name in the result -> fql_result_set. Here is the FQL JSON I got.
{
"data": [
{
"name": "query1",
"fql_result_set": [
{
"uid": uid1,
"eid": eid1,
"rsvp_status": "attending"
},
{
"uid": uid2,
"eid": eid2,
"rsvp_status": "attending"
},
{
"uid": uid3,
"eid": eid3,
"rsvp_status": "attending"
}
]
},
{
"name": "query2",
"fql_result_set": [
{
"uid": uid1,
"name": "name1",
"pic_square": "pic1"
},
{
"uid": uid2,
"name": "name2",
"pic_square": "pic2"
},
{
"uid": uid3,
"name": "name3",
"pic_square": "pic3"
}
]
}
]
}
Here is what I got at the moment in my Java code, but I get nothing in return. The data I get, will eventually go in an ArrayList.
try {
GraphObject go = response.getGraphObject();
JSONObject jso = go.getInnerJSONObject();
JSONArray data = jso.getJSONArray("data");
for(int i = 0; i < data.length(); i++){
JSONObject o1 = data.getJSONObject(i);
JSONArray rs1 = o1.getJSONArray("fql_result_set");
for(int j = 0; j < rs1.length(); j++){
JSONObject rso1 = rs1.getJSONObject(j);
String uid = rso1.getString("uid");
String eid = rso1.getString("eid");
String rsvp = rso1.getString("rsvp_status");
}
JSONObject o2 = data.getJSONObject(i);
JSONArray rs2 = o2.getJSONArray("fql_result_set");
for(int k = 0; k < rs2.length(); k++){
JSONObject rso2 = rs2.getJSONObject(k);
String name = rso2.getString("name");
String pic = rso2.getString("pic_square");
}
}
} catch (JSONException e) {
e.printStackTrace();
}
Does anyone know how I need to parse this JSON result?
Thanks in advance!
Solution
try {
people = new ArrayList<Person>();
GraphObject go = response.getGraphObject();
JSONObject jso = go.getInnerJSONObject();
JSONArray data = jso.getJSONArray("data").getJSONObject(0)
.getJSONArray("fql_result_set");
JSONArray data2 = jso.getJSONArray("data").getJSONObject(1)
.getJSONArray("fql_result_set");
for (int i = 0; i < data.length(); i++) {
Person p = new Person();
JSONObject o1 = data.getJSONObject(i);
uid = o1.getString("uid");
p.setUserId(uid);
p.setRsvp_status(o1.getString("rsvp_status"));
for (int j = 0; j < data2.length(); j++) {
JSONObject o2 = data2.getJSONObject(j);
if (p.getUserId().equals(o2
.getString("uid"))) {
p.setName(o2.getString("name"));
p.setPic(o2.getString("pic_square"));
}
}
people.add(p);
}
} catch (JSONException e) {
e.printStackTrace();
}
// assign the whole result to a JSON Object
JSONObject result = whatever-variable-name
// get 'data' JSONArray
JSONArray array = result.getJSONArray('data')
// loop
for(i = 0; i < array.length(); i++) {
JSONObject obj = array.getJSONObject(i);
**
name = obj.getString('name');
}
** at this point obj is "name": "query1",
"fql_result_set": [
{
"uid": uid1,
"eid": eid1,
"rsvp_status": "attending"
},
{
"uid": uid2,
"eid": eid2,
"rsvp_status": "attending"
},
{
"uid": uid3,
"eid": eid3,
"rsvp_status": "attending"
}
]
and name has the value query1 or query2 depending on the loop count. You could you the methods used so far to gain access to fql_result_set": [
{
"uid": uid1,
"eid": eid1,
"rsvp_status": "attending"
},
{
"uid": uid2,
"eid": eid2,
"rsvp_status": "attending"
},
{
"uid": uid3,
"eid": eid3,
"rsvp_status": "attending"
}
] GLHF!
Try this:
String strEvents = new JSONArray(apiResponse).getJSONObject(0).toString();
String strVenues= new JSONArray(apiResponse).getJSONObject(1).toString();
jsonArray = new JSONObject(strEvents).getJSONArray("fql_result_set");
jsonVenues = new JSONObject(strVenues).getJSONArray("fql_result_set");