亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將分號附加到數組中的每個項目,將逗號附加到數組對象集,以形成一個字符串

將分號附加到數組中的每個項目,將逗號附加到數組對象集,以形成一個字符串

子衿沉夜 2023-06-21 16:07:37
我有一個 JSON 數組{"payment":[{"a":"11","b":"21","c":"34","d":"0"},{"a":"54","b":"66","c":"21","d":"76"},{"a":"34","b":"23","c":"43","d":"88"}]} ,我已經迭代數組中的每個項目以形成一個字符串。我試圖丟棄數組中“d”等于 0(零)的數組對象。例如:{"a":"11","b":"21","c":"34","d":"0"}.我在每個項目之間添加了一個分號,并在每個數組對象中添加了一個逗號:{54;66;21;76,34;23;43;88}。但我需要這樣的最終結果{"payment":"54;66;21;76,34;23;43;88"}:代碼:public class TestJson {public static void main(String[] args) {    String jsonArray = "{\"payments\":[{\"a\":\"11\",\"b\":\"21\",\"c\":\"34\",\"d\":\"0\"},{\"a\":\"54\",\"b\":\"66\",\"c\":\"21\",\"d\":\"76\"},{\"a\":\"34\",\"b\":\"23\",\"c\":\"43\",\"d\":\"88\"}]}";    JsonObject jsonObject2 = new Gson().fromJson(jsonArray, JsonObject.class);    String key = "";    JsonObject innerObj = new JsonObject();    StringBuilder joinBuilder = new StringBuilder();    JsonArray paymentsArray = jsonObject2.getAsJsonArray("payments");    for (JsonElement jsonElement : paymentsArray) {        Set<Entry<String, JsonElement>> elemEntry = ((JsonObject) jsonElement).entrySet();        Iterator<Entry<String, JsonElement>> itr = elemEntry.iterator();        String finalVal = "";        String semiColon = "";        while (itr.hasNext()) {            Entry<String, JsonElement> entry = itr.next();            key = entry.getKey();            JsonPrimitive valuePrim = entry.getValue().getAsJsonPrimitive();            if (valuePrim.isString()) {                finalVal = valuePrim.getAsString();            }            joinBuilder.append(semiColon).append(finalVal);            semiColon = ";";        }        joinBuilder.append(",");    }    innerObj.addProperty("payments", joinBuilder.toString());    System.out.println(innerObj.toString());}}輸出:{"payments":"11;21;34;0,54;66;21;76,34;23;43;88,"}但我需要刪除字符串末尾的逗號,如果“d”字段為 0,則丟棄整個數組對象。前任:{11;21;34;0}
查看完整描述

1 回答

?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

我解決了這個問題。


代碼:


public static void main(String[] args) {

    String jsonArray = "{\"payments\":[{\"a\":\"11\",\"b\":\"21\",\"c\":\"34\",\"d\":\"0\"},{\"a\":\"54\",\"b\":\"66\",\"c\":\"21\",\"d\":\"76\"},{\"a\":\"34\",\"b\":\"23\",\"c\":\"43\",\"d\":\"88\"}]}";

    JsonObject jsonObject2 = new Gson().fromJson(jsonArray, JsonObject.class);

    JsonObject innerObj = new JsonObject();

    StringBuilder joinBuilder = new StringBuilder();

    Map<String, String> testMap = new LinkedHashMap<String, String>();

    JsonArray paymentsArray = jsonObject2.getAsJsonArray("payments");

    for (JsonElement jsonElement : paymentsArray) {

        Set<Entry<String, JsonElement>> elemEntry = ((JsonObject) jsonElement).entrySet();

        Iterator<Entry<String, JsonElement>> itr = elemEntry.iterator();

        while (itr.hasNext()) {

            Entry<String, JsonElement> entry = itr.next();

            testMap.put(entry.getKey(), entry.getValue().getAsString());

        }

        if (testMap.get("d").equals("0")) {

            testMap.clear();

        } else {

            joinBuilder.append(StringUtils.join(testMap.values(), ';')).append(",");

        }

    }

    joinBuilder.deleteCharAt(joinBuilder.length() - 1);

    innerObj.addProperty("payments", joinBuilder.toString());

    System.out.println(innerObj.toString());

}

輸出:{"payments":"54;66;21;76,34;23;43;88"}


查看完整回答
反對 回復 2023-06-21
  • 1 回答
  • 0 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號