В общем, я думаю, что лучше преобразовать цвета в HSV, а затем преобразовать оттенок (и обратно в исходное кодирование). Мы используем яркость (темные элементы) и насыщенность (невыбранные кнопки и т. Д.) В качестве семантического элемента, поэтому лучше его сохранить.
Таким образом, вы также поддерживаете контраст.
Но: нормальное ВПГ на самом деле не является истинным физиологическим ВПГ: наиболее используемая формула просто установлена для гаммы RGB и дает максимальный диапазон и является независимым от параметра. В реальности максимум V зависит от H (если вы хотите сравнить V между разными цветами) и другого эффекта.
И эти и другие визуальные эффекты (не в любом HSV) будут влиять на визуальный результат, так что вы можете сделать это программно (например, JavaScript, который читает и переопределяет все цвета, но это тема для других вопросов), но если вы сделать сайт профессионально, вы все равно должны вручную настроить некоторые элементы.
Примечание: последняя версия CSS и многие препроцессоры CSS позволяют вам использовать значения HSV и применять программно насыщенность, свет и изменения оттенков.
Если вам нужен новый объект с двумя ключами, 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 и поддерживал поставить все.
Вы можете создать новый 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.
Кто-то уже упомянул выше. Я просто отправлю короткую версию.
Для слияния двух JSONObject json1
& json2
Вы могли просто иметь дело он со Строкой как это:
String merged = json1.toString().substring(0, json1.length() - 1) + "," +
json2.toString().substring(1);
JSONObject mergedJson = new JSONObject(merged);
, Конечно, не забывайте соглашение с JSONException
.:) Надежда это могло помочь Вам.