Слияние (Concat) несколько JSONObjects в Java

В общем, я думаю, что лучше преобразовать цвета в HSV, а затем преобразовать оттенок (и обратно в исходное кодирование). Мы используем яркость (темные элементы) и насыщенность (невыбранные кнопки и т. Д.) В качестве семантического элемента, поэтому лучше его сохранить.

Таким образом, вы также поддерживаете контраст.

Но: нормальное ВПГ на самом деле не является истинным физиологическим ВПГ: наиболее используемая формула просто установлена ​​для гаммы RGB и дает максимальный диапазон и является независимым от параметра. В реальности максимум V зависит от H (если вы хотите сравнить V между разными цветами) и другого эффекта.

И эти и другие визуальные эффекты (не в любом HSV) будут влиять на визуальный результат, так что вы можете сделать это программно (например, JavaScript, который читает и переопределяет все цвета, но это тема для других вопросов), но если вы сделать сайт профессионально, вы все равно должны вручную настроить некоторые элементы.

Примечание: последняя версия CSS и многие препроцессоры CSS позволяют вам использовать значения HSV и применять программно насыщенность, свет и изменения оттенков.

49
задан Ondra Žižka 17 December 2018 в 06:44
поделиться

3 ответа

Если вам нужен новый объект с двумя ключами, Object1 и Object2, вы можете сделать:

JSONObject Obj1 = (JSONObject) jso1.get("Object1");
JSONObject Obj2 = (JSONObject) jso2.get("Object2");
JSONObject combined = new JSONObject();
combined.put("Object1", Obj1);
combined.put("Object2", Obj2);

Если вы хотите объединить их, так например объект верхнего уровня имеет 5 ключей (Stringkey1, ArrayKey, StringKey2, StringKey3, StringKey4), я думаю, вам придется делать это вручную:

JSONObject merged = new JSONObject(Obj1, JSONObject.getNames(Obj1));
for(String key : JSONObject.getNames(Obj2))
{
  merged.put(key, Obj2.get(key));
}

Это было бы намного проще, если бы JSONObject реализовал Map и поддерживал поставить все.

52
ответ дан 7 November 2019 в 11:38
поделиться

Вы можете создать новый JSONObject следующим образом:

JSONObject merged = new JSONObject();
JSONObject[] objs = new JSONObject[] { Obj1, Obj2 };
for (JSONObject obj : objs) {
    Iterator it = obj.keys();
    while (it.hasNext()) {
        String key = (String)it.next();
        merged.put(key, obj.get(key));
    }
}

С помощью этого кода, если у вас есть повторяющиеся ключи между Obj1 и Obj2 значение в Obj2 останется. Если вы хотите сохранить значения в Obj1 , вам следует изменить порядок массива в строке 2.

21
ответ дан 7 November 2019 в 11:38
поделиться

Кто-то уже упомянул выше. Я просто отправлю короткую версию.

Для слияния двух JSONObject json1 & json2 Вы могли просто иметь дело он со Строкой как это:

String merged = json1.toString().substring(0, json1.length() - 1) + "," +
json2.toString().substring(1);
JSONObject mergedJson = new JSONObject(merged);

, Конечно, не забывайте соглашение с JSONException.:) Надежда это могло помочь Вам.

0
ответ дан 7 November 2019 в 11:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: