根据JSON响应添加文本

时间:2016-12-27 07:49:12

标签: android 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]]
            );

        }

2 个答案:

答案 0 :(得分: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]]
     );
}

答案 1 :(得分: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;
}
}

试试这个..