2013-08-17 4 views
0

Я новичок в JSON и смущаюсь каждый раз, когда создаю новый. Я пытаюсь создать массив JSON как это:.JSON construction

{ 
     "id":"2003", 
     "HouseMD" : 
      { 
       "Doctor_1": "Thirteen", 
       "Doctor_2" : "Chase" 
       "Doctor_n" : "Someone" 
      } 

} 

В основном я пытаюсь добавить данные динамически из Doctor_1 в Doctor_n»в цикле, и если я использую JSON объект Я только получаю последний . значение, когда я, наконец, распечатать его Как получить то, что я хочу Любая помощь приветствуется

Благодаря

+1

Думаю, вам не нужно хранить HouseMD в объекте, вы должны использовать массив. Вы знаете, что должны быть врачи, поэтому нет смысла хранить такие ключи, как «Доктор_1», «_2» и т. Д. Просто сделайте '{id: 1, HouseMD: ['Тринадцать', 'Чейз', 'Кто-то']}' Или, если вы хотите сохранить больше свойств для врачей, тогда это может быть массив объектов врачей '[{name: 'Chase', otherProp: 'val'}, ...]' – Wirus

+0

этот пост может помочь: http://stackoverflow.com/questions/15402321/how-to-convert-hashmap-to-json-array-in-android –

ответ

0

JSON массивы выглядеть следующим образом:..

{ "id":"2003", "HouseMD" : [{ "Doctor_1": "Thirteen"}, {"Doctor_2" : "Chase"}, {"Doctor_n" : "Someone" }]} 

Обратите внимание на квадратную скобку, которая окружает каждый объект JSON в массиве.

Вот ссылка на сайт JSON, который может предложить больше информации:

JSON

+0

Как я могу построить JSON? и как я могу получить это на стороне сервера? – JPro

0

Обратите внимание, что для того, чтобы код ниже, чтобы работать, вы будете также нуждаться в библиотеку JSON, который вы можете легко скачать здесь Download Java JSON Library

Я не знаю, подход вы используете, но основанный на формате, который вы хотите, я хотел бы сделать что-то вроде этого:

JSONObject data = new JSONObject(); 

data.put("id", "2003"); 

JSONObject doctors = new JSONObject(); 

//here I suppose you have all doctors in a list named doctorList 
//and also suppose that you get the name of a doctor by the getName() method 
for (int i = 0; i < doctorList.size(); ++i) 
{ 
    doctors.put("Doctor_" + (i+1), doctorList.get(i).getName(); 
} 

data.put("HouseMD", doctors); 

//then you could write to a file, or on screen just for test 
System.out.println(data.toString()); 

Однако, я чувствую, что вам нужно стать более комфортным с JSON, поэтому попробуйте starting here.

+0

Я попытался отправить это серверу, и сервер вернется назад, указав неверные символы UTF-8, возможно, неправильную кодировку, что делать – JPro

+0

@JPro IDK почему я думал, что вы используете Java. Какой язык вы используете на стороне клиента и на стороне сервера, и я мог бы вам помочь. Возможно, код, который вы пробовали до сих пор. – TGO

+0

На мобильном конце я использую java, на стороне сервера я использую PHP, и это то, где я являюсь tyring для проверки полученной строки JSON, а распечатки кода php сообщение об ошибке, упомянутое выше – JPro