Отправка массива Json с устройства Android на серверный javascript мобильных служб Azure не работает

#c# #android #azure #azure-mobile-services

#c# #Android #azure #azure-mobile-services

Вопрос:

Как отправить массив Json на серверный javascript в мобильных службах Azure с устройства Android.

Ниже приведена кодировка c # из приложения Windows Store, которая работает правильно.

Вопрос Войдите, чтобы проголосовать 0 Войдите, чтобы проголосовать

Как отправить массив Json на серверный javascript в мобильных службах Azure с устройства Android.

Ниже приведена кодировка c # из приложения Windows Store, которая работает правильно.

 JArray jsonArray = new JArray();
            jsonArray.Add(JToken.FromObject(new Contact() { Name = "Clarke", ContactNo = "123456" }));
            jsonArray.Add(JToken.FromObject(new Contact() { Name = "Jordan", ContactNo = "4513264" }));

JToken x = await App.MobileService.InvokeApiAsync("userservice/UploadContacts", jsonArray);
 

Когда я тестирую через Fiddler, он работает правильно. Но когда я отправляю с устройства Android, я получаю данные на сервере в виде

{ значения: [ {nameValuePairs: [Объект] }, {nameValuePairs: [объект] } ] }

количество записей совпадает, но вместо фактических данных я получаю nameValuePairs: object.

Ниже приведена кодировка Android.

     JSONObject job = new JSONObject();

    Contact c1 = new Contact();
    c1.ContactNO = "9067655676";
    c1.Name = "abcd";

    job.add(c1);

    Contact c2 = new Contact();
    c2.ContactNO = "999999999";
    c2.Name = "efgh";

    job.add(c2);

    JSONArray book = new JSONArray(job);

    MobileServiceClient mClient = new MobileServiceClient(
         "https://MyAppService.azure-mobile.net/",
          "myKeyValue", context);

    mClient.invokeApi("userservice/UploadContacts", book, Contact.class , new ApiOperationCallback() 
    {
             //onCompleted callback code..............
    });
 

Класс контактов имеет 2 свойства ContactNO, Name

Кто-нибудь, пожалуйста, помогите мне решить эту проблему……..

Комментарии:

1. Можете ли вы опубликовать свой фактический код? Приведенный выше код имеет проблемы с синтаксисом (пропущенные точки с запятой и т.д.) и не компилируется.

2. Привет, Крис, я обновил код Android

Ответ №1:

Почти уверен, что ваш код никак не будет компилироваться подобным образом. Во всяком случае, вы, вероятно, захотите сделать что-то подобное:

 JsonArray jArray = new JsonArray();

Contact c1 = new Contact();
c1.ContactNO = "123455";
c1.Name = "Test";

Gson gson = new Gson();
jArray.add(gson.toJsonTree(c1));
Contact c2 = new Contact();
c2.ContactNO = "23455";
c2.Name = "test2";
jArray.add(gson.toJsonTree(c2));

mClient.invokeApi("uploadContacts", jArray, new ApiJsonOperationCallback() {
        @Override
        public void onCompleted(JsonElement jsonElement, Exception e, ServiceFilterResponse serviceFilterResponse) {
 

Обратите внимание, что вы добавляете элементы в JSONArray, а не в JSONObject. Вы хотите убедиться, что используете com.google.библиотека json для этого.

Комментарии:

1. Да, но вам нужно войти и принять ответ как решенный (он будет отмечен зеленой галочкой под подсчетом голосов в StackOverflow).