Create an Array string for table layout - java

I want to pass a list of data from my php to populate my table layout, am presently using volley to connect to my server side. How do i set this list
Am making use of codecrafters library and they have a tutorial on how to populate the table which works for me but the problem is the items they used were manually typed and not gotten dynamically from a server, so am having issues implementing this same code for data that comes from a server
Their string looks like this
static String[][] spaceProbes={
{"1","Pioneer","Chemical","Jupiter"},
{"2","Voyager","Plasma","Andromeda"},
{"3","Casini","Solar","Saturn"},
{"4","Spitzer","Anti-Matter","Andromeda"},
{"5","Apollo","Chemical","Moon"},
{"6","Curiosity","Solar","Mars"},
};
and they populate it into the layout using
tableView.setDataAdapter(new SimpleTableDataAdapter(MainActivity.this, spaceProbes));
am presently using this array string but it returns the last item in the array only
try {
//converign the strign to json assary object
JSONArray array = new JSONArray(response);
//traversing through all teh objects
for (int i = 0; i < array.length(); i++) {
//getting product object from json array
JSONObject allClass = array.getJSONObject(i);
takin = new String[]{allClass.getString("numb"),
allClass.getString("name"),
allClass.getString("time")};
}
tableView.setDataAdapter(new SimpleTableDataAdapter(AttendanceActivity.this, Collections.singletonList(takin)));
} catch (JSONException e) {
e.printStackTrace();
}
How do i recreate the same structure as spaceProbes but this time from the server

You reset the value of takin every time when you do
takin = new String[]{allClass.getString("numb"),
allClass.getString("name"),
allClass.getString("time")};
Instead, try this,
String[][] takin = new String[array.length()][3]
for (int i = 0; i < array.length(); i++) {
JSONObject allClass = array.getJSONObject(i);
takin[i] = new String[]{allClass.getString("numb"),
allClass.getString("name"),
allClass.getString("time")};
}
tableView.setDataAdapter(new SimpleTableDataAdapter(AttendanceActivity.this, Collections.singletonList(takin)));

Related

Accessing Nested Elements of JSON in Java

I have a java project in which I take a JSON and read its contents. I'm using org.json libraries and I would like to iterate through JSONObjects which are nested in a JSONArray, which is nested in a JSONObject. I keep getting this error though: JSONArray initial value should be a string or collection or array. I'm specifically getting the JSON from a web source, but here is an example of one: http://jsonblob.com/1062033947625799680
I'm particularly concerned about the fact that each player profile is unnamed, but there may be a simple fix for that.
I'd like to get access to each player profile and here is what I have that is causing an error:
import org.json.*;
JSONObject JSON = new JSONObject(content1.toString());
JSONArray data = new JSONArray(JSON.getJSONArray("data"));
for(int z = 1; i<data.length(); i++)
{
JSONObject ply = new JSONObject(data.getJSONObject(z));
System.out.println(ply.toString());
}
I have a feeling I just don't fully understand the terminology of JSON and/or the library that I'm using, but any help is appreciated.
Try this instead:
JSONObject JSON = new JSONObject(content1.toString());
JSONArray data = new JSONArray(JSON.getJSONArray("data"));
for(int i = 0; i<data.length(); i++) {
JSONObject ply = data.getJSONObject(i);
System.out.println(ply.toString());
}
It turns out I just have to access the particular element in one line:
JSONObject JSON = new JSONObject(content1.toString());
JSONArray data = JSON.getJSONArray("data");
for(int z = 0; z<data.length(); z++)
{
//JSONObject ply = new JSONObject(data.getJSONObject(z));
String name = data.getJSONObject(z).getString("skaterFullName");
System.out.println(name);
}

What does the format from json into a list?

So basically I'm trying to remove some part of my list, but the problem is because I just got into android development, I don't know the format of the list that I got from JSON file.
Here is the code of my method that retrieve it from a JSON file:
public void getCategory (JSONArray jsonArray, List<ModelCategory> Category){
for (int i = 0; i < jsonArray.length(); i++){
try {
ModelCategory currentCategory = new ModelCategory();
JSONObject jsonObject = jsonArray.getJSONObject(i);
currentCategory.setCategoryID(jsonObject.getInt("idCategory"));
currentCategory.setCategoryName(jsonObject.getString("name"));
Category.add(currentCategory);
kat1.addAll(Category);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Basically, I'm trying to remove the idCategory from the kat1 list. But I don't know what the list looks like. I've read about remove() method from the list, but how do I utilize the method to remove the idCategory?
I'm sorry for the unclear title, I'm pretty new to java development.

Mapping JSON to arrays/objects in Java - Android

I have a web system that returns a json string with the data that I need in an Android App. The string is below:
[
{"id":1,
"title":"Remove ViRuSeS",
"tagline":"Remove ViRuSeS",
"body":"Body",
"image":"index.jpg",
"steps":[
{"id":2,
"title":"Step 1",
"body":"Download Things!",
"position":1}
]
}
]
It should return an array of objects, with one of the object's items also being an array of items.
I am familiar with gson and have gotten this working in the past, but I always had to simplify my data down to just an object, which makes me end up have to make multiple calls to get the data.
Is there a good way to do this without having to map all of the possible values back into classes?
My last attempt was to just try to get something simple out of this and am getting a NullPointerException on the second of these lines:
userDet = new JSONObject(string);
JSONArray userDetJson = userDet.getJSONArray("Steps");
change it to "steps" and not "Steps" , It will fix it:
userDet = new JSONObject(string);
JSONArray userDetJson = userDet.getJSONArray("steps");
The full parsing method:
JSONArray mainArray = new JSONArray(json);
for (int i = 0 ; i < mainArray.length() ; i ++)
{
JSONObject currentItem = array.getJSONObject(i);
String title = currentItem.getString("title");
String body = currentItem.getString("body ");
....
JSONArray currentItemStepsArray = currentItem.getJSONArray("steps");
for (int j = 0 ; j < currentItemStepsArray.length() ; j ++)
{
....
}
}
Here, try this:
JSONArray topLevelArr = new JSONArray(json);
JSONArray stepArr = topLevelArr.getJSONObject(0).getJSONArray("steps");

Issue With JSON Object in Java?

I have a JSON Object which converted into String and saved into database .But when i am trying to get it back it is throwing exception.My object is something like that...
{"COLUMN":["Type","Sub Type","F.P.","P.P.","Process","Due To Start"]}
How can we get the data back in Normal form?
My Java Code is.....
JSONObject obj = new JSONObject();
JSONArray the_json_array = obj.getJSONArray(userReorderOption);
int size = the_json_array.size();
ArrayList<JSONObject> arrays = new ArrayList<JSONObject>();
for (int i = 0; i < size; i++) {
JSONObject another_json_object = the_json_array.getJSONObject(i);
arrays.add(another_json_object);
}
And Exception i am getting....
net.sf.json.JSONException: JSONObject["{\"TASKLIST_COLUMN_REORDER\":[\"Type\",\"Sub Type\",\"F.P.\",\"P.P.\",\"Process\",\"Due To Start\"]}"] is not a JSONArray.
And this is java Code how i am creating JSON Object and saving into database...
String userReorderSelection;
Set set = new LinkedHashSet(userReorderSelection);
JSONObject json = new JSONObject();
json.accumulate("COLUMN", set);
saveJSONObj("PrimaryKeyColumn", json.toString());
Thanks Tichodroma,
But as i told i am using net.sf.json.JSONObject class and above things we can achieve from this class too..What i did to solve the above issue?...Please have a look on the Java code...
JSONObject jsonObj = new JSONObject();
JSONObject obj = jsonObj.fromObject(userReorderOption);
JSONArray columnName = (JSONArray) obj.get("COLUMN");
for (int i = 0; i < columnName.size(); i++) {
System.out.println(columnName.getString(i));
}
This code work fine for me with my Json Jar**(net.sf.json)**
Your JSON is not a JSONArray.
A JSONArray is an ordered sequence of values.
You have a JSONObject.
A JSONObject is an unordered collection of name/value pairs.
Edit:
Using the JSON implementation from org.codehaus.jettison.json, you can do this:
String json = "{\"COLUMN\":[\"Type\",\"Sub Type\",\"F.P.\",\"P.P.\",\"Process\",\"Due To Start\"]}";
JSONObject obj = new JSONObject(json);
JSONArray column = (JSONArray) obj.get("COLUMN");
for (int i = 0; i < column.length(); i++) {
final String field = column.getString(i);
System.out.println(field);
}
Result:
Type
Sub Type
F.P.
P.P.
Process
Due To Start

json in java getting the correct values from a list

I am using the package org.json package: I need help with getting the corect data from the json in java. this is the string I have in json:
{"GetLocationsResult":[{"ID":82,"Name":"Malmo","isCity":true,"isCounty":false,"isDisctrict":false,"ID_Parent":null,"ID_Map":35,"ZipCode":"7000"},{"ID":82,"Name":"Trelleborg","isCity":true,"isCounty":false,"isDisctrict":false,"ID_Parent":null,"ID_Map":35,"ZipCode":"7000"}]}
This is a listing and this is just a test, it will contain more than 2 items, so my questions is, I want to get the name of all locations, I want to populate a spinner with names in my android app.
How can I get the "Name":"Malmo" and so on....
???
The answer is simple....The JSON element starts with a { which is a JSON Object, and GetLocationsResults is a JSON Array of JSON Objects. In essence, I translated the JSON String to the following code...
JSONObject rootJson = new JSONObject(jsonString);
JSONArray jsonArray = rootJson.getJSONArray("GetLocationsResult");
//Let's assume we need names....
String[] names = null;
if (jsonArray != null) {
names = new String[jsonArray.length()];
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject json = jsonArray.getJSONObject(i);
names[i] = json.getString("Name");
}
}
//Test
for (String name: names) {
System.out.println(name);
}

Categories