2015-07-28 3 views
0

У меня есть список массив с целыми значениями от 2 до 6, и я могу проверить, если каждое число четным или нечетным следующим образом:Использование JSON массива внутри объекта JSON в Java

JSONObject outerObject = new JSONObject(); 
JSONArray outerArray = new JSONArray(); 
JSONObject [] innerObject = new JSONObject[list1.size()]; 
     for (i = 0; i < list1.size(); i++)// change to list1.size() 
      { 
       innerObject[i]=new JSONObject(); 
       innerObject[i].put("Item" , list1.get(i)); 
       if(list1.get(i)%2==0) 
       { 
        innerObject[i].put("Odd or Even", "number "+list1.get(i)+" is even"); 
       } 
       else 
        innerObject[i].put("Odd or Even", "number "+list1.get(i)+" is odd");     
       outerArray.put(innerObject[i]); 
      } 
     outerObject.put("rows", outerArray); 
     return outerObject.toString(); 

тогда я следующий JSON-файл результаты

{"rows":[ 
{"Item":2,"Odd or Even":"number 2 is even"}, 
{"Item":3,"Odd or Even":"number 3 is odd"}, 
{"Item":4,"Odd or Even":"number 4 is even"}, 
{"Item":5,"Odd or Even":"number 5 is odd"}, 
{"Item":6,"Odd or Even":"number 6 is even"} 
]} 

теперь я хочу, чтобы найти умножение между списком массива элементом как:

{"rows":[ 
    {"Item":2,"Odd or Even":"number 2 is even", "Multiplication:[4,6]"}, 
    {"Item":3,"Odd or Even":"number 3 is odd","Multiplication:[6]"}, 
    {"Item":4,"Odd or Even":"number 4 is even"}, 
    {"Item":5,"Odd or Even":"number 5 is odd"}, 
    {"Item":6,"Odd or Even":"number 6 is even"} 
    ]} 

Я знаю, что мне нужно использовать другой цикл внутри первого цикла, что-то вроде этого

for (j=i; j < list1.size(); j++) 
      { 
       inerArray[j]=new JSONArray(); 
       if (list1.get(j)%list.get(i)==0) 
        inerArray[j].put(list1.get(j)); 

      } 
innerObject[i].put("Multiplication" , inerArray); 

, но он не работает

Я использую Java и веб-службы RESTful

ответ

2

Вы можете попробовать это, если это полезно для вас: -

public static void main(String args[]){ 
    List<Integer> list1 = new ArrayList<Integer>(); 
    list1.add(2); 
    list1.add(3); 
    list1.add(4); 
    list1.add(5); 
    list1.add(6); 
    JSONObject outerObject = new JSONObject(); 
    JSONArray outerArray = new JSONArray(); 
    List<Integer> duplicateValue=new ArrayList<Integer>(); 
    JSONObject [] innerObject = new JSONObject[list1.size()]; 
      for (int i = 0; i < list1.size(); i++)// change to list1.size() 
       { 
        JSONArray inerArray = new JSONArray(); 
        innerObject[i]=new JSONObject(); 
        innerObject[i].put("Item" , list1.get(i)); 
        if(list1.get(i)%2==0) 
        { 
         innerObject[i].put("Odd or Even", "number "+list1.get(i)+" is even"); 
        } 
        else{ 
         innerObject[i].put("Odd or Even", "number "+list1.get(i)+" is odd"); 
        } 
        for (int j=i; j < list1.size(); j++) 
        { 
         if(list1.get(j)!=list1.get(i)){ 
          if (list1.get(j)%list1.get(i)==0){ 
            if(!duplicateValue.contains(list1.get(j))){ 
            inerArray.add(list1.get(j)); 
            duplicateValue.add(list1.get(j)); 
           } 
          } 
         } 
        } 
        if(inerArray.size()!=0){ 
         innerObject[i].put("Multiplication" , inerArray); 
        } 
        outerArray.add(innerObject[i]); 
       } 

      outerObject.put("rows", outerArray); 
      System.out.println(outerObject.toString()); 
} 

Выход: - { "строк": [{ "Item": 2, "четным или нечетным":» число 2 равно "," Умножение ": [4,6]}, {" Item ": 3," Odd or Even ":" число 3 нечетно "," Умножение ": [6]}, {" Item " : 4, «Нечетный или четный»: «номер 4 четный»}, {«Пункт»: 5, «Нечетный или четный»: «номер 5 нечетный»}, {«Пункт»: 6, «Нечетный или четный», : «число 6 равно»}]}

+0

Большое спасибо, что было reall у полезно я изменить свой меняющийся inerArray.put вместо inerArray.add и inerArray.length (код) вместо inerArray.size() Thanx снова –

+1

@Hanan Добро пожаловать .. :) – NaveenG

+0

могу я задать еще один вопрос о той же проблеме? @NaveenG –

0

Я отсортирован из вашей проблемы. Вы можете попробовать это.

public static void main(String[] args) throws JSONException { 
    List<Integer> list1 = new ArrayList<>(); 
    list1.add(2); 
    list1.add(3); 
    list1.add(4); 
    list1.add(5); 
    list1.add(6); 
    JSONObject outerObject = new JSONObject(); 
    JSONArray outerArray = new JSONArray(); 
    JSONObject[] innerObject = new JSONObject[list1.size()]; 
    for (int i = 0; i < list1.size(); i++)// change to list1.size() 
     { 
     innerObject[i] = new JSONObject(); 
     innerObject[i].put("Item", list1.get(i)); 
     if (list1.get(i) % 2 == 0) { 
      innerObject[i].put("Odd or Even", "number " + list1.get(i) + " is even"); 
     } else{ 
      innerObject[i].put("Odd or Even", "number " + list1.get(i) + " is odd"); 
     } 
     //Finding Multiplication 
     int currentNumber = list1.get(i); 
     String mulitplcationNumbers = "["; 
     for(Integer numberFromList : list1){ 
      if(numberFromList !=currentNumber && numberFromList % currentNumber==0){ 
       mulitplcationNumbers+=numberFromList + ","; 
      } 
     } 
     if(!mulitplcationNumbers.equals("[")){ 
      mulitplcationNumbers = mulitplcationNumbers.substring(0, mulitplcationNumbers.length()-1); 
      innerObject[i].put("Multiplication", mulitplcationNumbers + "]"); 
     } 
     outerArray.put(innerObject[i]); 
    } 
    outerObject.put("rows", outerArray); 
    System.out.println(outerObject.toString()); 
} 
Смежные вопросы