Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android create a Json String

Tags:

json

android

I am trying to create a JSON String in the Android application.

    JSONArray jArrayFacebookData = new JSONArray();
    JSONObject jObjectType = new JSONObject();

    // put elements into the object as a key-value pair
    jObjectType.put("type", "facebook_login");

    jArrayFacebookData.put(jObjectType);

    // 2nd array for user information
    JSONObject jObjectData = new JSONObject();


    // Create Json Object using Facebook Data
    jObjectData.put("facebook_user_id", id);
    jObjectData.put("first_name", first_name);
    jObjectData.put("last_name", last_name);
    jObjectData.put("email", email);
    jObjectData.put("username", username);
    jObjectData.put("birthday", birthday);
    jObjectData.put("gender", gender);
    jObjectData.put("location", place);
    jObjectData.put("display_photo", display_photo_url);

    jArrayFacebookData.put(jObjectData);

Which creates a string like this

[
   {
      "type":"facebook_login"
   },
   {
      "birthday":"06\/22\/1986",
      "first_name":"Harsha",
      "username":"harshamv",
      "location":"Bangalore, India",
      "email":"[email protected]",
      "last_name":"Mv",
      "gender":"male",
      "facebook_user_id":"1423671254",
      "display_photo":"http:\/\/graph.facebook.com\/1423671254\/picture?type=large"
   }
]

I want to create a JSON string something like this

[
   "system":{
      "type":"facebook_login"
   },
   "data":{
      "birthday":"06\/22\/1986",
      "first_name":"Harsha",
      "username":"harshamv",
      "location":"Bangalore, India",
      "email":"[email protected]",
      "last_name":"Mv",
      "gender":"male",
      "facebook_user_id":"1423671254",
      "display_photo":"http:\/\/graph.facebook.com\/1423671254\/picture?type=large"
   }
]
like image 705
Harsha M V Avatar asked Nov 10 '11 11:11

Harsha M V


People also ask

How can I convert JSON to string?

Use the JavaScript function JSON.stringify() to convert it into a string. const myJSON = JSON.stringify(obj); The result will be a string following the JSON notation.

Does JSON work on android?

Android supports all the JSON classes such as JSONStringer, JSONObject, JSONArray, and all other forms to parse the JSON data and fetch the required information by the program. JSON's main advantage is that it is a language-independent, and the JSON object will contain data like a key/value pair.

What is JSON array in android?

JSON (Javascript Object Notation) is a programming language . It is minimal, textual, and a subset of JavaScript. It is an alternative to XML. Android provides support to parse the JSON object and array.

What is the JSON exception in android?

public class JSONException extends Exception. Thrown to indicate a problem with the JSON API. Such problems include: Attempts to parse or construct malformed documents. Use of null as a name.


2 Answers

JSONObject jArrayFacebookData = new JSONObject();
    JSONObject jObjectType = new JSONObject();

    // put elements into the object as a key-value pair
    jObjectType.put("type", "facebook_login");

    jArrayFacebookData.put("system", jObjectType);

    // 2nd array for user information
    JSONObject jObjectData = new JSONObject();


    // Create Json Object using Facebook Data
    jObjectData.put("facebook_user_id", id);
    jObjectData.put("first_name", first_name);
    jObjectData.put("last_name", last_name);
    jObjectData.put("email", email);
    jObjectData.put("username", username);
    jObjectData.put("birthday", birthday);
    jObjectData.put("gender", gender);
    jObjectData.put("location", place);
    jObjectData.put("display_photo", display_photo_url);

    jArrayFacebookData.put("data", jObjectData);

this will give you jsonObject, but not array, i don't see any point in using JSONArray. JSONObject is better in this case. you will see following output as String

{
   "system":{
      "type":"facebook_login"
   },
   "data":{
      "birthday":"06\/22\/1986",
      "first_name":"Harsha",
      "username":"harshamv",
      "location":"Bangalore, India",
      "email":"[email protected]",
      "last_name":"Mv",
      "gender":"male",
      "facebook_user_id":"1423671254",
      "display_photo":"http:\/\/graph.facebook.com\/1423671254\/picture?type=large"
   }
}
like image 122
Yashwanth Kumar Avatar answered Oct 18 '22 11:10

Yashwanth Kumar


Create JSON objects for the jArrayFacebookData (not JSONArray as you have taken) and put jObjectType and jObjectData inside it.

Check this JSONObject put object method.

Update:

Your JSON is having error:

enter image description here

Valid JSON is:

{
    "system": {
        "type": "facebook_login"
    },
    "data": {
        "birthday": "06/22/1986",
        "first_name": "Harsha",
        "username": "harshamv",
        "location": "Bangalore, India",
        "email": "[email protected]",
        "last_name": "Mv",
        "gender": "male",
        "facebook_user_id": "1423671254",
        "display_photo": "http://graph.facebook.com/1423671254/picture?type=large"
    }
}

Final Solution:

     try
        {
    JSONObject jArrayFacebookData = new JSONObject();

        JSONObject jObjectType = new JSONObject();
        jObjectType.put("type", "facebook_login");

        JSONObject jObjectData = new JSONObject();
        jObjectData.put("facebook_user_id", "2323");
        jObjectData.put("first_name", "2323");
        jObjectData.put("last_name", "2323");
        //put other data here   

    jArrayFacebookData.put("system", jObjectType);
    jArrayFacebookData.put("data",jObjectData);

    System.out.println("==========> Final output => "+jArrayFacebookData.toString());

  }
  catch(Exception e)
  {

  }
like image 27
Paresh Mayani Avatar answered Oct 18 '22 12:10

Paresh Mayani