how to convert a string[] to json - java

I declared an array as below
String[] finalcodes = new String[50] ;
and assigning some values to it finally when I print finalcodes it results as below.
["aaa","bbb","ccc"]
but my requirement is to get it as a json object
so please suggest me how to convert my string array to JSON Object.

You can use jackson library also check your json is valid;
http://jackson.codehaus.org/ / http://jsonformatter.curiousconcept.com/

Related

How to Convert List To JsonObject?

This may to possible of duplicate i need to convert the list to jsonobject like this
{"EmailID":"Djlj#sl.com","PhoneNumber":"870796850","ID":2}
like this how can i achieve this so far what i have tried is :
List<CustomerModel> listobj=new ArrayList<CustomerModel>();
listobj=timetrackerdaoobj.Listtoserver();
String gsonString=new Gson().toJson(listobj, collectionType);
In this method am getting jsonarray like this
[{"EmailID":"Djlj#sl.com","PhoneNumber":"870796850","ID":2}]
But i need format like this:
{"EmailID":"Djlj#sl.com","PhoneNumber":"870796850","ID":2}
Try this way,
String gsonString=new Gson().toJson(listobj, collectionType);
gsonString = gsonString.replace("[","").replace("]","");
System.out.println(gsonString); // here you got expected answer
this may helps you.
You want a JSON Object, and not a JSON Array. So pass only your java object and not the list into your Gson converter :
String gsonString = new Gson().toJson(listobj.get(0), yourType);

How to Get Arrays Separately from JSON Objects in Rest

Lately i have been trying to consume a Rest service which returns the below rough sample JSON. It has objects which contains Arrays and arrays contains Strings.
{
Main Object:{
Object1:{
}
Object2:{
}
Object3:{
Array1[String1,String2,String3]
Array2[String1,String2,String3]
Array3[String1,String2,String3]
Array4[String1,String2,String3]
}
}}
My requirement is to get all the arrays and check which of the specific array contains specific/required String values and than get those strings to show in jsp.
I am using Spring MVC(Rest Template) but any java based solution would do the work.
P.S: I am New to WebServices.
use JSONArray to get it from below
JSONArray jsonArray = new JSONArray();
jsonArray = JSONObject.getJSONObject("Main Object").getJSONObject("Object3").getJSONArray("Array1");
//Iterate through the above array to get required String.
for the next array :
jsonArray = JSONObject.getJSONObject("Main Object").getJSONObject("Object3").getJSONArray("Array2");
//Iterate through the second array to get required String.

How to deal with json string in java servlet

A variable called wrongAnswers which is an array of javascript objects is generated on the client.
It has the form
wrongAnswers = [
{"wrongAnswer": "Manzana", "wrongQuestion": "apple"},
{"wrongAnswer": "arbol", "wrongQuestion": "tree"}
]
JSON.stringify(wrongAnswers) is used and the variable is then sent to a servlet using a form.
Once it is in the servlet, i want to convert the JSON into a Java Arraylist.
I have a class Answer with 2 variables, wrongAnswer and wrongQuestion. I would like to iterate through the JSON array, and for each object, create an Answer object with the value of wrongAnswer and wrongQuestion in that JSON Object. Each time, adding the Answer object to an ArrayList so in the end, i have an ArrayList of Answers corresponding to all the values from the JSON.
At the moment, I can use request.getParameter("json") which gets me a String with the JSON data. However, i am not sure what to do with this String.
Is there a way i can easily convert a String holding JSON data into a JsonArray or JsonObject, which i can easily iterate through, getting the value of the name: value pairs in each object?
Some example code would have been nice, but there is many ways to parse and work with JSON.
One way you could try is:
JSONArray json = new JSONArray(jsonString);
ArrayList<String> array = new ArrayList<String>();
for(int index = 0; index < json.length(); index++) {
JSONObject jsonObject = json.getJSONObject(index);
String str= jsonObject.getString("wrongAnswer");
array.add(str);
}
Try using jackson for parsing the json string: https://github.com/FasterXML/jackson
For an example, look up: How to parse a JSON string to an array using Jackson

Parsing a JSON document

actually I'm struggeling with parsing the following JSON doc: LINK
I have a class which is saving the content in a String (rawData). After that I want to parse it with Gson.
DownloadedCategories dcats = new Gson().fromJson(rawData, DownloadedCategories.class);
My goal is to have a List of an extra datatype of the 21 main categories, and in the extra datatype saved in another List the subcategories.
My approach was to create the new datatype mainCategory which includes the List of the subcategories.
The problem is that i can't do the DownloadedCategories class like this:
public class DownloadedCategories
{
private List<mainCategories> categories;
public List<mainCategories> getCategories;
{
return categories;
}
}
Has someone an idea how to fix my issue?
Looks like that Json from your link is not formatted to fit in your object.
You need to know in which attribute you will put your categories since you are trying to parse a Json array in an object. In your DownloadedCategories the attribute is categories. So you need to wrap your Json in an attribute categories.
String wellFolrmedJson = "{\"categories\": " + rawData + "}";
DownloadedCategories dcats = new Gson().fromJson(wellFolrmedJson , DownloadedCategories.class);
Gson will bind the json array in your Object list.
The best way to parse your data is by using array as starting point like in this example.
mainCategories[] dcats = new Gson().fromJson(rawData , mainCategories[].class);

JSON parsing to Java - Android application

I need help with parsing json string in Java Android Appl.
Text of JSON file:
{"data":{"columns":["location_id","name","description","latitude","longitude","error","type","type_id","icon_media_id","item_qty","hidden","force_view"],"rows":[[2,"Editor","",43.076014654537,-89.399642451567,25,"Npc",1,0,1,"0","0"],[3,"Dow Recruiter","",43.07550842555,-89.399381822662,25,"Npc",2,0,1,"0","0"] [4,"Protestor","",43.074933,-89.400438,25,"Npc",3,0,1,"0","0"],[5,"State Legislator","",43.074868061524,-89.402136196317,25,"Npc",4,0,1,"0","0"],[6,"Marchers Bascom","",43.075296413877,-89.403374183615,25,"Node",22,0,1,"0","0"] [7,"Mary","",43.074997865584,-89.404967573966,25,"Npc",7,0,1,"0","0"]]},"returnCode":0,"returnCodeDescription":null}
How can get values: location_id, name, latitude, longitude.
Thanks, Michal.
Using manual parsing you can implement it like this:
JSONArray pages = new JSONArray(jsonString);
for (int i = 0; i < pages.length(); ++i) {
JSONObject rec = pages.getJSONObject(i);
JSONObject jsonPage =rec.getJSONObject("page");
String address = jsonPage.getString("url");
String name = jsonPage.getString("name");
String status = jsonPage.getString("status");
}
in your case note that your outer elemnt data is type of JSONObject and then you have a JSONArray
mine json file:
[{"page":{"created_at":"2011-07-04T12:01:00Z","id":1,"name":"Unknown Page","ping_at":"2011-07-04T12:06:00Z","status":"up","updated_at":"2011-07-04T12:01:00Z","url":"http://www.iana.org/domains/example/","user_id":2}},{"page":{"created_at":"2011-07-04T12:01:03Z","id":3,"name":"Down Page","ping_at":"2011-07-04T12:06:03Z","status":"up","updated_at":"2011-07-04T12:01:03Z","url":"http://www.iana.org/domains/example/","user_id":2}}]
note that mine starts from [, which means an array, but yours from { and then you have [ array inside. If you run it with a debugger, you can see exactly what´s inside your json objects.
There are also better approaches like:
Jackson
Jackson-JR (light-weight Jackson)
GSON
All of them can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to an equivalent Java object.
First of all, you need to know about Json parsing in android, so for that first read this: JSONObject, in that class, you will see the below methods:
getJSONArray(String name)
getJSONObject(String name)
getString(String name)
and many more methods to be used while implementing JSON parsing in android.
Update:
And if you are still confused then click on below link to have many examples available on web: Android JSON Parsing
You need to use the GSON lib
http://code.google.com/p/google-gson/
Object Examples
class BagOfPrimitives {
private int value1 = 1;
private String value2 = "abc";
private transient int value3 = 3;
BagOfPrimitives() {
// no-args constructor
}
}
(Serialization)
BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj);
==> json is {"value1":1,"value2":"abc"}
Note that you can not serialize objects with circular references since that will result in infinite recursion.
(Deserialization)
BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);
==> obj2 is just like obj
If you mean to navigate easily the Json Tree, you can use JSON Path, that is query system, similar to XPath to XML, that you can use to pick some elements in a json tree using text expressions.
http://code.google.com/p/json-path/ That's a good implementation
If you just mean that you want to parse that JSon you can use Gson from google (that is compatible with Android I guess).
This contains a complete example for your case.

Categories