Основная цель здесь - отправить упорядоченный объект JSON в качестве ответа. Для этого нам не нужен javax.json.JsonObject. Мы могли бы создать упорядоченный json как строку. Сначала создайте LinkedHashMap со всеми парами значений ключей в требуемом порядке. Затем сгенерируйте json в строке, как показано ниже. Это намного проще с Java 8.
public Response getJSONResponse() {
Map<String, String> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("A", "1");
linkedHashMap.put("B", "2");
linkedHashMap.put("C", "3");
String jsonStr = linkedHashMap.entrySet().stream()
.map(x -> "\"" + x.getKey() + "\":\"" + x.getValue() + "\"")
.collect(Collectors.joining(",", "{", "}"));
return Response.ok(jsonStr).build();
}
Ответ возврата этой функцией будет следующим: {"A":"1","B":"2","C":"3"}
Вы возвращаете строку из функции, но нет типа возврата кода обновления функции, подобного этому:
public static List<int> GetTotalResearchByArea()
{
// here put your code
}
Надеюсь, это поможет.
Если вы что-то определяете, лучше использовать IList, чем List <>. В качестве ответа на ваш вопрос я бы предпочел использовать
public static IList<int> GetTotalResearchByArea(){
//write your codes as usual
}
Алхамдулилла решен ..
public Array GetTotalResearchByArea()
{
var list = new List<int>();
var all_area = context.Areas.Select(x => x.Id ).ToList();
foreach( var item in all_area)
{
var allReserachCategory = context.ResearchCategories.Where(a => a.AreaId == item).Select(a => a.Id).ToList();
var totalResearchBySingleArea = context.Researchs.Where(c => allReserachCategory.Contains(c.ResearchCategoryId)).Count();
list.Add(totalResearchBySingleArea);
}
return list.ToArray();
}