Не удается конвертировать данные в формате JSON для Android - PullRequest
0 голосов
/ 09 мая 2019

У меня есть некоторые данные, которые я хочу преобразовать в объект json.Я хочу получить следующие данные:

{"week":"Apr 22, 2019","package_id":23,"weekdata":["2019-05-07##14:00##16:45"]}

День недели относится к типу массива, а другие относятся к типу объектов json.Я сделал некоторый код для его преобразования, но я могу преобразовать его как

{"weekdata":"[\"2019-04-01##5:0##5:0\",\"2019-04-02##5:0##5:0\"]","package_id":"44","week":"Apr 01, 2019"}

Код для этого:

Код для создания массива недельных данных:

  String firstDay = etDate1.getText().toString() + "##" + etStartTime1.getText().toString() + "##" + etEndTime1.getText().toString();
  String secondDay = etDate2.getText().toString() + "##" + etStartTime2.getText().toString() + "##" + etEndTime2.getText().toString();
 selectionItems.add(firstDay);
 selectionItems.add(secondDay);
 String[] blist = new String[selectionItems.size()];
 Log.e("tag", "array" + blist.length + selectionItems);

  for (int i = 0; i < selectionItems.size(); i++) {
        blist[i] = selectionItems.get(i);
}
 Log.e("tag", "arrayList" + blist[0]);
 weekdata = new JSONArray();


 for (int i = 0; i < blist.length; i++) {
     weekdata.put(  blist[i]  );   
 }

Преобразование в json для отправки в залп:

HashMap<String, String> params = new HashMap<String, String>();

params.put("package_id", package_id);
params.put("week", weekName);
params.put("weekdata",weekdata.toString() );


JSONObject obj = new JSONObject(params);

И я получаю данные как:

{"weekdata":"[\"2019-04-01##5:0##5:0\",\"2019-04-02##5:0##5:0\"]","package_id":"44","week":"Apr 01, 2019"}

Как я могу преобразовать это, как показано ниже в формате:

 {"week":"Apr 22, 2019","package_id":23,"weekdata":["2019-05-07##14:00##16:45"]}

Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

По вашему вопросу

Как я могу конвертировать его, как показано ниже:

{"week": "22 апреля 2019", "package_id": 23, "weekdata": ["2019-05-07 ## 14: 00 ## 16: 45"]}

String firstDay = etDate1.getText().toString() + "##" + 
etStartTime1.getText().toString() + "##" + etEndTime1.getText().toString();
String secondDay = etDate2.getText().toString() + "##" + 
etStartTime2.getText().toString() + "##" + etEndTime2.getText().toString();
selectionItems.add(firstDay);
selectionItems.add(secondDay);
String[] blist = new String[selectionItems.size()];
Log.e("tag", "array" + blist.length + selectionItems);

for (int i = 0; i < selectionItems.size(); i++) {
    blist[i] = selectionItems.get(i);
}
Log.e("tag", "arrayList" + blist[0]);
JsonArray weekdata = new JSONArray();


for (int i = 0; i < blist.length; i++) {
 weekdata.put(  blist[i]  );   
}

After this wrap this in the JsonObject



JsonObject jsonObject = new JsonObject();
jsonObject.put("package_id", package_id);
jsonObject.put("week", weekName); 
jsonObject.put("weekdata",weekdata);

Log.e("jsonResult",jsonObject.toString());

Попробуйте и дайте мне знать @ mishti.

0 голосов
/ 09 мая 2019

Это происходит потому, что вы определили свою карту как карту и преобразовали свой список в строку с помощью метода toString (). Который генерирует вашу строку с. Вы должны определить свою Карту как Карту и не использовать метод toString при помещении ее в Карту.

Код:

HashMap<String, Object> params = new HashMap<String, Object>();

params.put("package_id", package_id);
params.put("week", weekName);
params.put("weekdata",weekdata);


JSONObject obj = new JSONObject(params);

Один вопрос здесь, почему вы используете карту? есть ли для этого особая причина?

Вы можете создать JSON непосредственно из JSONObject.

Пример кода:

JSONObject jsonObject = new JSONObject();
jsonObject.put("package_id", package_id);
jsonObject.put("week", weekName);
jsonObject.put("weekdata",weekdata);

С JSONObject вам не нужно беспокоиться о генериках.

...