2016-12-27 91 views
2

添加文本我將收到包含這一個JSON響應:根據JSON響應

{..."Weekday":[3,4,2],...} //numbers might not be in Ascending order 

然後根據什麼「平日」裏我會打印出週日0週一1等。所以上面打印的文字是;

"Tuesday,Wednesday,Thursday" //This should be in ascending order 

如何檢查和打印我想要什麼,我這樣做的方式是這樣的:

JSONObject obj = new JSONObject(result); //result from backend 
JSONObject DayOff = obj.getJSONObject("Weekday"); 

... 

tvWeekdays = (TextView) getActivity().findViewById(R.id.tvWeekdays); 
tvWeekdays.setText("The final result"); 

我不知道用怎樣做到這一點,我想到的也許while循環或if語句會有幫助嗎?

--- UPDATE ---

  JSONArray array = obj.getJSONArray("Weekday"); 
     if (array == null){ 

      tvDayOff = (TextView) getActivity().findViewById(R.id.tvDayOff); 
      tvDayOff.setText("None"); 
     } 
     // Create an int array to accomodate the numbers. 
     int[] numbers = new int[array.length()]; 
     Arrays.sort(numbers); 
     // Extract numbers from JSON array. 
     for (int i = 0; i < array.length(); ++i) { 
      numbers[i] = array.optInt(i); 
      System.out.println(
        DateFormatSymbols.getInstance().getWeekdays()[numbers[i]] 
      ); 

     } 
+1

** ** 1排序的INT使用'Arrays.sort'數組。 ** 2 **迭代值** 3 **使用'DateFormatSymbols.getWeekdays'將int轉換爲String。也許這樣? – AxelH

+0

在對數據進行排序之前,您已經忘記了將值放入您的「int []數字」中。你需要循環一次「數組」來初始化「數字」然後對其進行排序。然後你可以得到字符串值(把它們放在你想要的位置) – AxelH

回答

1

這裏是如何得到這取決於區域的值一個簡單的例子:

public static void main(String[] args){ 
    for(int i = 0; i < 7; ++i) 
     System.out.println(
      DateFormatSymbols.getInstance().getWeekdays()[i+1] //First cell is empty... 
     ); 
} 

這是我的輸出(在法語語言環境) :

dimanche //Sunday 
lundi //Monday 
mardi 
mercredi 
jeudi 
vendredi 
samedi //Saterday 

由此看來,你只需要訂購您使用Arrays.sort(int[])整數數組,並獲得字符串。

如果不使用JSON,這會就像這樣:

public static void main(String[] args){ 
    int[] array = {3, 5, 2}; //The array 
    Arrays.sort(array);  //Sort the array 
    for(int i = 0; i < array.length; ++i) //Loop on the result 
    System.out.println(
     DateFormatSymbols.getInstance().getWeekdays()[array[i]] 
    ); 
} 

最後一步將是獲取數組,對於這一點,我建議你閱讀this answer

編輯:

你不能在一個循環中完成。您首先需要獲取值然後對數組進行排序。一旦做到這一點,你可以得到的字符串以正確的順序

// Create an int array to accomodate the numbers. 
int[] numbers = new int[array.length()]; 
    // Extract numbers from JSON array. 
for (int i = 0; i < array.length(); ++i) { 
     numbers[i] = array.optInt(i); 
} 
Arrays.sort(numbers); 
for (int i = 0; i < numbers.length; ++i) { 
    System.out.println(
     DateFormatSymbols.getInstance().getWeekdays()[numbers[i]] 
    ); 
} 
+0

感謝你的回答,它幾乎工作。然而,仍然存在一些問題,我已經更新了我的答案,但是平日顯示的數據會被星期一的1. 1,星期一的2以及其他數據所抵消。另外我覺得我的數組排序不正確。 – JerryKo

+0

@JerryKo看到編輯。對於偏移量,第一天是星期日,但在索引1處。如果您希望星期一開始,則可能需要使用模數。 – AxelH

+1

謝謝您的回答 – JerryKo

1
JSONObject obj = new JSONObject(result); //result from backend 
    JSONArray DayOff = obj.getJSONArray("Weekday"); // I think weekday is an array 
// if weekday look like {"weekday":[2,4,3]}, its an array if so 
String[] dayText = new String[DayOff.length()]; 
for(int i=0, len=DayOff.length(); i<len; i++){ 
switch (DayOff(i)) { 
      case 0: dayText[i] = "Sunday"; 
        break; 
      case 1: dayText[i] = "Monday"; 
        break; 
      case 2: dayText[i] = "Tuesday"; 
        break; 
} 
} 

試試這個..

+0

這是一些問題,首先'DayOff(i)'是僞代碼,您需要使用getter來獲取值。其次,你應該訂購這個數組。最後,由於這些值存在,所以不需要開關 – AxelH