1

I've a json file like :

{
  "a1" : {
    "Contestant 1 marks" : 44,
    "Contestant 10 marks" : 30,
    "Contestant 11 marks" : 15,
    "Contestant 12 marks" : 35,
    "Contestant 13 marks" : 28,
    "Contestant 14 marks" : 8,
    "Contestant 2 marks" : 35,
    "Contestant 3 marks" : 30.899999618530273,
    "Contestant 4 marks" : 39,
    "Contestant 5 marks" : 45,
    "Contestant 6 marks" : 47,
    "Contestant 7 marks" : 17,
    "Contestant 8 marks" : 37,
    "Contestant 9 marks" : 35
  },
  "a2" : {
    "Contestant 1 marks" : 35,
    "Contestant 10 marks" : 30,
    "Contestant 11 marks" : 15,
    "Contestant 12 marks" : 35,
    "Contestant 13 marks" : 28,
    "Contestant 14 marks" : 8,
    "Contestant 2 marks" : 30,
    "Contestant 3 marks" : 30.899999618530273,
    "Contestant 4 marks" : 39,
    "Contestant 5 marks" : 45,
    "Contestant 6 marks" : 47,
    "Contestant 7 marks" : 17,
    "Contestant 8 marks" : 37,
    "Contestant 9 marks" : 35
  }
}

It seems like there are two JSON objects here a1, a2. And these objects itself have 14 JSON objects.

I've a String completeJson; which contains complete JSON.

Now when I write

JSONObject jsonRootObj = new JSONObject(completeJson);

Then whilch json object will come into jsonRootObj?

Also how do I get the value for the key : "Contestant 1 marks" for a1 and a2 in my JSON file ?

I want to add the value of objects in a1 with value of objects in a2 which have the same KEY.

Ayushi bhardwaj
  • 441
  • 5
  • 18

4 Answers4

0

You can get the parse a1 and a2 to be JSONObject, and then change values.

JSONObject jsonRootObj = JSON.parseObject(completeJson);
JSONObject a1 = jsonRootObj.getJSONObject("a1");
JSONObject a2 = jsonRootObj.getJSONObject("a2");
for (Map.Entry<String, Object> entry : a1.entrySet()) {
    if (a2.containsKey(entry.getKey())) {
        a2.put(entry.getKey(), entry.getValue());
    }
}

P.S: My JSON parser is fastjson

Martin Dai
  • 47
  • 1
  • 10
0

in this way you get values from A1:

long valA1 = ((Long)((JSONObject)jo.get("a1")).get("Contestant 1 marks")).longValue();

in this way you put in A2:

((JSONObject)((JSONObject)jo.get("a2")).get("Contestant 1 marks")).put("Contestant 1 marks", valA1);

where jo is:

JSONParser jp = new JSONParser();
JSONObject jo = (JSONObject)jp.parse(<your json string>);
francesco.s
  • 306
  • 1
  • 10
0

Lets make your life easier.

Download gson library.

Right Click on the project, Build Path->Add External Archives.

Then create a class with whatever name you want(I used Example.java):

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Example {

    @SerializedName("a1")
    @Expose
    private A1 a1;
    @SerializedName("a2")
    @Expose
    private A2 a2;

    /**
     * @return The a1
     */
    public A1 getA1() {
        return a1;
    }

    /**
     * @param a1 The a1
     */
    public void setA1(A1 a1) {
        this.a1 = a1;
    }

    /**
     * @return The a2
     */
    public A2 getA2() {
        return a2;
    }

    /**
     * @param a2 The a2
     */
    public void setA2(A2 a2) {
        this.a2 = a2;
    }

    public class A1 {

        @SerializedName("Contestant 1 marks")
        @Expose
        private int contestant1Marks;
        @SerializedName("Contestant 10 marks")
        @Expose
        private int contestant10Marks;
        @SerializedName("Contestant 11 marks")
        @Expose
        private int contestant11Marks;
        @SerializedName("Contestant 12 marks")
        @Expose
        private int contestant12Marks;
        @SerializedName("Contestant 13 marks")
        @Expose
        private int contestant13Marks;
        @SerializedName("Contestant 14 marks")
        @Expose
        private int contestant14Marks;
        @SerializedName("Contestant 2 marks")
        @Expose
        private int contestant2Marks;
        @SerializedName("Contestant 3 marks")
        @Expose
        private float contestant3Marks;
        @SerializedName("Contestant 4 marks")
        @Expose
        private int contestant4Marks;
        @SerializedName("Contestant 5 marks")
        @Expose
        private int contestant5Marks;
        @SerializedName("Contestant 6 marks")
        @Expose
        private int contestant6Marks;
        @SerializedName("Contestant 7 marks")
        @Expose
        private int contestant7Marks;
        @SerializedName("Contestant 8 marks")
        @Expose
        private int contestant8Marks;
        @SerializedName("Contestant 9 marks")
        @Expose
        private int contestant9Marks;

        /**
         * @return The contestant1Marks
         */
        public int getContestant1Marks() {
            return contestant1Marks;
        }

        /**
         * @param contestant1Marks The Contestant 1 marks
         */
        public void setContestant1Marks(int contestant1Marks) {
            this.contestant1Marks = contestant1Marks;
        }

        /**
         * @return The contestant10Marks
         */
        public int getContestant10Marks() {
            return contestant10Marks;
        }

        /**
         * @param contestant10Marks The Contestant 10 marks
         */
        public void setContestant10Marks(int contestant10Marks) {
            this.contestant10Marks = contestant10Marks;
        }

        /**
         * @return The contestant11Marks
         */
        public int getContestant11Marks() {
            return contestant11Marks;
        }

        /**
         * @param contestant11Marks The Contestant 11 marks
         */
        public void setContestant11Marks(int contestant11Marks) {
            this.contestant11Marks = contestant11Marks;
        }

        /**
         * @return The contestant12Marks
         */
        public int getContestant12Marks() {
            return contestant12Marks;
        }

        /**
         * @param contestant12Marks The Contestant 12 marks
         */
        public void setContestant12Marks(int contestant12Marks) {
            this.contestant12Marks = contestant12Marks;
        }

        /**
         * @return The contestant13Marks
         */
        public int getContestant13Marks() {
            return contestant13Marks;
        }

        /**
         * @param contestant13Marks The Contestant 13 marks
         */
        public void setContestant13Marks(int contestant13Marks) {
            this.contestant13Marks = contestant13Marks;
        }

        /**
         * @return The contestant14Marks
         */
        public int getContestant14Marks() {
            return contestant14Marks;
        }

        /**
         * @param contestant14Marks The Contestant 14 marks
         */
        public void setContestant14Marks(int contestant14Marks) {
            this.contestant14Marks = contestant14Marks;
        }

        /**
         * @return The contestant2Marks
         */
        public int getContestant2Marks() {
            return contestant2Marks;
        }

        /**
         * @param contestant2Marks The Contestant 2 marks
         */
        public void setContestant2Marks(int contestant2Marks) {
            this.contestant2Marks = contestant2Marks;
        }

        /**
         * @return The contestant3Marks
         */
        public float getContestant3Marks() {
            return contestant3Marks;
        }

        /**
         * @param contestant3Marks The Contestant 3 marks
         */
        public void setContestant3Marks(float contestant3Marks) {
            this.contestant3Marks = contestant3Marks;
        }

        /**
         * @return The contestant4Marks
         */
        public int getContestant4Marks() {
            return contestant4Marks;
        }

        /**
         * @param contestant4Marks The Contestant 4 marks
         */
        public void setContestant4Marks(int contestant4Marks) {
            this.contestant4Marks = contestant4Marks;
        }

        /**
         * @return The contestant5Marks
         */
        public int getContestant5Marks() {
            return contestant5Marks;
        }

        /**
         * @param contestant5Marks The Contestant 5 marks
         */
        public void setContestant5Marks(int contestant5Marks) {
            this.contestant5Marks = contestant5Marks;
        }

        /**
         * @return The contestant6Marks
         */
        public int getContestant6Marks() {
            return contestant6Marks;
        }

        /**
         * @param contestant6Marks The Contestant 6 marks
         */
        public void setContestant6Marks(int contestant6Marks) {
            this.contestant6Marks = contestant6Marks;
        }

        /**
         * @return The contestant7Marks
         */
        public int getContestant7Marks() {
            return contestant7Marks;
        }

        /**
         * @param contestant7Marks The Contestant 7 marks
         */
        public void setContestant7Marks(int contestant7Marks) {
            this.contestant7Marks = contestant7Marks;
        }

        /**
         * @return The contestant8Marks
         */
        public int getContestant8Marks() {
            return contestant8Marks;
        }

        /**
         * @param contestant8Marks The Contestant 8 marks
         */
        public void setContestant8Marks(int contestant8Marks) {
            this.contestant8Marks = contestant8Marks;
        }

        /**
         * @return The contestant9Marks
         */
        public int getContestant9Marks() {
            return contestant9Marks;
        }

        /**
         * @param contestant9Marks The Contestant 9 marks
         */
        public void setContestant9Marks(int contestant9Marks) {
            this.contestant9Marks = contestant9Marks;
        }

    }

    public class A2 {

        @SerializedName("Contestant 1 marks")
        @Expose
        private int contestant1Marks;
        @SerializedName("Contestant 10 marks")
        @Expose
        private int contestant10Marks;
        @SerializedName("Contestant 11 marks")
        @Expose
        private int contestant11Marks;
        @SerializedName("Contestant 12 marks")
        @Expose
        private int contestant12Marks;
        @SerializedName("Contestant 13 marks")
        @Expose
        private int contestant13Marks;
        @SerializedName("Contestant 14 marks")
        @Expose
        private int contestant14Marks;
        @SerializedName("Contestant 2 marks")
        @Expose
        private int contestant2Marks;
        @SerializedName("Contestant 3 marks")
        @Expose
        private float contestant3Marks;
        @SerializedName("Contestant 4 marks")
        @Expose
        private int contestant4Marks;
        @SerializedName("Contestant 5 marks")
        @Expose
        private int contestant5Marks;
        @SerializedName("Contestant 6 marks")
        @Expose
        private int contestant6Marks;
        @SerializedName("Contestant 7 marks")
        @Expose
        private int contestant7Marks;
        @SerializedName("Contestant 8 marks")
        @Expose
        private int contestant8Marks;
        @SerializedName("Contestant 9 marks")
        @Expose
        private int contestant9Marks;

        /**
         * @return The contestant1Marks
         */
        public int getContestant1Marks() {
            return contestant1Marks;
        }

        /**
         * @param contestant1Marks The Contestant 1 marks
         */
        public void setContestant1Marks(int contestant1Marks) {
            this.contestant1Marks = contestant1Marks;
        }

        /**
         * @return The contestant10Marks
         */
        public int getContestant10Marks() {
            return contestant10Marks;
        }

        /**
         * @param contestant10Marks The Contestant 10 marks
         */
        public void setContestant10Marks(int contestant10Marks) {
            this.contestant10Marks = contestant10Marks;
        }

        /**
         * @return The contestant11Marks
         */
        public int getContestant11Marks() {
            return contestant11Marks;
        }

        /**
         * @param contestant11Marks The Contestant 11 marks
         */
        public void setContestant11Marks(int contestant11Marks) {
            this.contestant11Marks = contestant11Marks;
        }

        /**
         * @return The contestant12Marks
         */
        public int getContestant12Marks() {
            return contestant12Marks;
        }

        /**
         * @param contestant12Marks The Contestant 12 marks
         */
        public void setContestant12Marks(int contestant12Marks) {
            this.contestant12Marks = contestant12Marks;
        }

        /**
         * @return The contestant13Marks
         */
        public int getContestant13Marks() {
            return contestant13Marks;
        }

        /**
         * @param contestant13Marks The Contestant 13 marks
         */
        public void setContestant13Marks(int contestant13Marks) {
            this.contestant13Marks = contestant13Marks;
        }

        /**
         * @return The contestant14Marks
         */
        public int getContestant14Marks() {
            return contestant14Marks;
        }

        /**
         * @param contestant14Marks The Contestant 14 marks
         */
        public void setContestant14Marks(int contestant14Marks) {
            this.contestant14Marks = contestant14Marks;
        }

        /**
         * @return The contestant2Marks
         */
        public int getContestant2Marks() {
            return contestant2Marks;
        }

        /**
         * @param contestant2Marks The Contestant 2 marks
         */
        public void setContestant2Marks(int contestant2Marks) {
            this.contestant2Marks = contestant2Marks;
        }

        /**
         * @return The contestant3Marks
         */
        public float getContestant3Marks() {
            return contestant3Marks;
        }

        /**
         * @param contestant3Marks The Contestant 3 marks
         */
        public void setContestant3Marks(float contestant3Marks) {
            this.contestant3Marks = contestant3Marks;
        }

        /**
         * @return The contestant4Marks
         */
        public int getContestant4Marks() {
            return contestant4Marks;
        }

        /**
         * @param contestant4Marks The Contestant 4 marks
         */
        public void setContestant4Marks(int contestant4Marks) {
            this.contestant4Marks = contestant4Marks;
        }

        /**
         * @return The contestant5Marks
         */
        public int getContestant5Marks() {
            return contestant5Marks;
        }

        /**
         * @param contestant5Marks The Contestant 5 marks
         */
        public void setContestant5Marks(int contestant5Marks) {
            this.contestant5Marks = contestant5Marks;
        }

        /**
         * @return The contestant6Marks
         */
        public int getContestant6Marks() {
            return contestant6Marks;
        }

        /**
         * @param contestant6Marks The Contestant 6 marks
         */
        public void setContestant6Marks(int contestant6Marks) {
            this.contestant6Marks = contestant6Marks;
        }

        /**
         * @return The contestant7Marks
         */
        public int getContestant7Marks() {
            return contestant7Marks;
        }

        /**
         * @param contestant7Marks The Contestant 7 marks
         */
        public void setContestant7Marks(int contestant7Marks) {
            this.contestant7Marks = contestant7Marks;
        }

        /**
         * @return The contestant8Marks
         */
        public int getContestant8Marks() {
            return contestant8Marks;
        }

        /**
         * @param contestant8Marks The Contestant 8 marks
         */
        public void setContestant8Marks(int contestant8Marks) {
            this.contestant8Marks = contestant8Marks;
        }

        /**
         * @return The contestant9Marks
         */
        public int getContestant9Marks() {
            return contestant9Marks;
        }

        /**
         * @param contestant9Marks The Contestant 9 marks
         */
        public void setContestant9Marks(int contestant9Marks) {
            this.contestant9Marks = contestant9Marks;
        }

    }

}

After that,

String yourString = "json in String format";
Example example = new Gson().fromJson(yourString, Example.class);
example.getA1().getContestant1Marks();
example.getA2().getContestant1Marks();

Thats it. You can use these getter methods.

PS: I created this class using jsonschema2pojo by copying your json in to it.

Happy Coding...!!!

Chintan Soni
  • 24,761
  • 25
  • 106
  • 174
  • I don't have gradle in my java project.. what should I do? If I do this in android then there I'll have to fetch the JSON file from the server (But I'dont have a server for that) – Ayushi bhardwaj Jul 27 '16 at 11:09
  • Can you please tell how do I implement your method into eclipse project? – Amit Upadhyay Jul 27 '16 at 11:41
  • @Ayushibhardwaj Please check this post: http://stackoverflow.com/a/31829107/1739882 – Chintan Soni Jul 27 '16 at 11:41
  • @Ayushibhardwaj You have got jar file easily. You have my code ready. You just need to manage to add this jar file in your project. Try it.. – Chintan Soni Jul 27 '16 at 11:59
  • @AmitUpadhyay Remember.. this Example.java model only works with JSON provided with the question. If your JSON is different from this, you will need to create another model from the website I mentioned. – Chintan Soni Jul 27 '16 at 12:44
0

Your JSON String contains a nameless root element, starting at the first { and ending at the last }. This object will get into the jsonRootObj variable. To get the a1 or a2 object, do something like that:

JSONObject a1 = jsonRootObj.getJSONObject("a1");

To get the value of the first contestant in a1, you can do something like this:

int marks = a1.getInt("Contestant 1 marks");

You can find the complete Javadoc of JSONObject here. There is no need to have a JSON Array.

msrd0
  • 7,816
  • 9
  • 47
  • 82
  • @AmitUpadhyay Are you sure that the `completeJson` variable contains the JSON code you posted in your question? – msrd0 Jul 27 '16 at 19:45