Я занимаюсь разработкой проекта ASP.NET Web Api с Entity Framework и другим проектом с Android и библиотекой Volley.
Идея состоит в том, чтобы в ASP.NET был сервер и приложение для Android.клиент.
Оба проекта уже работают.Проект ASP.NET уже подключен к SQL Server и возвращает значения в формате json из одной базы данных, а клиент также анализирует json с онлайн-сервера, который я использовал для тестирования, когда следовал одному учебнику.
ASP.NET Web Api Controller:
public class StoreController : ApiController
{
// GET: api/Store
public IEnumerable<bo> Get()
{
using (EGLA_PHCEntities services = new EGLA_PHCEntities())
{
return services.bo.Where(e => e.nmdos == "Ficha Servico 30").Where(e => e.fechada == false).ToList();
}
}
...
}
Android:
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray(null);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject employee = jsonArray.getJSONObject(i);
String firstName = employee.getString("fieldA");
String mail = employee.getString("fieldB");
mTextViewResult.append(firstName + ", " + mail + "\n\n");
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
Проблема в том, что мой проект в ASP.NET не возвращает имя для массива объектов, а Androidожидание имени.
Решение может быть применено в ту или иную сторону.Он может пройти через проект ASP.NET, чтобы вернуть имя, или проект в Android, чтобы проанализировать json с пустым именем массива.
Изменено, поскольку список полей очень обширный:
[
{
"fieldA":"Something",
"fieldB":"Store 30",
},
{
"fieldA":"Something 2",
"fieldB":"Store 30 2",
}
]
Ошибка, которая возвращается в приложении Android: «org.json.JSONException: Нет значения для нуля».Если я изменю
JSONArray jsonArray = response.getJSONArray(null);
на:
JSONArray jsonArray = response.getJSONArray("services");
Возвращенная ошибка: «org.json.JSONException: Нет значения для служб»