2016-07-27 6 views
2

У меня есть JSON-файл, как:Как разобрать JSON без JSONArray в java?

{ 
    "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 
    } 
} 

Похоже, есть два объекта JSON здесь a1, a2. И у этих объектов есть 14 объектов JSON.

У меня есть String completeJson;, который содержит полный JSON.

Сейчас, когда я пишу

JSONObject jsonRootObj = new JSONObject(completeJson); 

Затем whilch объект JSON придет в jsonRootObj?

Также как получить значение для ключа: «Конкурсант 1 маркирует» для a1 и a2 в моем файле JSON?

Я хочу добавить значение объектов в a1 со значением объектов в a2, которые имеют тот же ключ.

+1

jsonRootObj.get ("a1"). Get ("Contestant 1 marks"), так как json, который вы разместили, не содержит никакого массива –

+0

Извините, что вам нужно использовать: ((JSONObject) jo.get ("a1")) .get ("Contestant 1 marks") –

ответ

0

Вы можете разобрать a1 и a2 как JSONObject, а затем изменить значения.

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()); 
    } 
} 

PS: Мой JSON парсер fastjson

+0

запись 'JSONObject a1 = jsonRootObj.getJSONObject (" a1 ");' throws exception: - org.json.JSONException: JSONObject ["a1"] не найден. –

+0

, который JSON Parser вы используете –

+0

'java-json'.jar - это файл, который я добавил в мои ссылочные библиотеки. И можете ли вы сказать, как добавить fastjson в свой проект? –

0

таким образом вы получите значения из A1:

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

таким образом вы кладете в A2:

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

где jo is:

JSONParser jp = new JSONParser(); 
JSONObject jo = (JSONObject)jp.parse(<your json string>); 
0

Позволяет сделать вашу жизнь проще.

Скачать gson library.

Щелкните правой кнопкой мыши по проекту, постройте путь-> Добавить внешние архивы.

Затем создайте класс с любым именем вы хотите (я использовал 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; 
     } 

    } 

} 

После этого

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

это так. Вы можете использовать эти методы getter.

PS: Я создал этот класс, используя jsonschema2pojo, скопировав ваш json в него.

Happy Coding ... !!!

+0

У меня нет градиента в моем проекте java .. что мне делать? Если я сделаю это в android, тогда я должен буду получить JSON-файл с сервера (но у меня нет сервера для этого) –

+0

@Ayushibhardwaj Какой редактор вы используете? –

+0

Eclipse for java ... –

0

Ваш JSON String содержит безымянный корневой элемент, начиная с первого { и заканчивая последним }. Этот объект попадет в переменную jsonRootObj.Чтобы получить a1 или a2 объект, сделать что-то вроде этого:

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

Чтобы получить значение первого участника в a1, вы можете сделать что-то вроде этого:

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

Вы можете найти полный Javadoc от JSONObjecthere. Нет необходимости иметь JSON-массив.

+0

@AmitUpadhyay Вы уверены, что переменная 'completeJson' содержит код JSON, который вы отправили в своем вопросе? – msrd0

Смежные вопросы