Все простят меня за это. Советы Дж. Б. Низета намного лучше, но я хотел посмотреть, что я смогу сделать.
public static void touch(
final Consumer<byte[]> setByte,
final Consumer<? super String> setByteValue,
final Supplier<String> byteString,
final Supplier<String> byteValue) {
if (byteString != null) {
setByte.accept(Base64.getDecoder().decode(byteString.get()));
}
if (byteValue.get() == null) {
setByteValue.accept(DEFAULT_BYTE_VALUE);
}
}
<ч> touch(
foo::setByte1,
foo::setByte1Value,
foo::getByte1String,
foo::getByte1Value
);
touch(
foo::setByte2,
foo::setByte2Value,
foo::getByte2String,
foo::getByte2Value
);
Если Вы думаете, что jQuery является видом излишества для такой примитивной задачи, Вы могли бы сделать что-то как этот:
//your object
var o = {
foo:"bar",
arr:[1,2,3],
subo: {
foo2:"bar2"
}
};
//called with every property and its value
function process(key,value) {
console.log(key + " : "+value);
}
function traverse(o,func) {
for (var i in o) {
func.apply(this,[i,o[i]]);
if (o[i] !== null && typeof(o[i])=="object") {
//going one step down in the object tree!!
traverse(o[i],func);
}
}
}
//that's all... no magic, no bloated framework
traverse(o,process);
Объект JSON является просто объектом JavaScript. Это на самом деле, что обозначает JSON: Объектная нотация JavaScript. Таким образом, Вы пересекли бы объект JSON однако, Вы примете решение "пересечь" объект JavaScript в целом.
В ES2017 Вы сделали бы:
Object.entries(jsonObj).forEach(([key, value]) => {
// do something with key and val
});
Можно всегда писать функцию для рекурсивного убывания в объект:
function traverse(jsonObj) {
if( jsonObj !== null && typeof jsonObj == "object" ) {
Object.entries(jsonObj).forEach(([key, value]) => {
// key is either an array index or object key
traverse(value);
});
}
else {
// jsonObj is a number or string
}
}
Это должно быть хорошей начальной точкой. Я настоятельно рекомендую использующие современные методы JavaScript для таких вещей, так как они делают написание такого кода намного легче.
Зависит от того, что Вы хотите сделать. Вот пример пересечения дерева объектов JavaScript, печатая ключи и значения, когда это идет:
function js_traverse(o) {
var type = typeof o
if (type == "object") {
for (var key in o) {
print("key: ", key)
js_traverse(o[key])
}
} else {
print(o)
}
}
js> foobar = {foo: "bar", baz: "quux", zot: [1, 2, 3, {some: "hash"}]}
[object Object]
js> js_traverse(foobar)
key: foo
bar
key: baz
quux
key: zot
key: 0
1
key: 1
2
key: 2
3
key: 3
key: some
hash