根据JSON响应
问题描述:
添加文本我将收到包含这一个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]]
);
}
答
这里是如何得到这取决于区域的值一个简单的例子:
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]]
);
}
答
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
** ** 1排序的INT使用'Arrays.sort'数组。 ** 2 **迭代值** 3 **使用'DateFormatSymbols.getWeekdays'将int转换为String。也许这样? – AxelH
在对数据进行排序之前,您已经忘记了将值放入您的“int []数字”中。你需要循环一次“数组”来初始化“数字”然后对其进行排序。然后你可以得到字符串值(把它们放在你想要的位置) – AxelH