Apache nosník s MessagePack - jak se můžu dostat hodnoty z mapy <hodnota, hodnota>?

hlasů
1

Uvnitř Apache Beam transformace mohu úspěšně transformovat pub / dílčích hodnot (ve formátu MessagePack), které jsem četl ze služby Google Cloud Pub / Sub do mapy MessagePack Valueobjektů, jako je tento:

    @ProcessElement
    public void processElement(ProcessContext c) 
    {
        Map<Value, Value> map = MessagePack.newDefaultUnpacker(c.element().getPayload()).unpackValue().asMapValue().map();

Když jsem se kontrolovat mapvidím následující:

zadejte

Pokud bych pak se snažit získat hodnotu takto to vždy vrací null:

map.get(Tz)

Jak získám hodnotu? Musím transformovat hodnoty jiným způsobem, nebo musím jiný způsob jejich získávání?

Položena 07/11/2018 v 23:35
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
2

Mapové Klávesy jsou MessagePack Valueobjekty, takže jsem potřeboval to odkazovat na klíč a vrátit hodnoty jako řetězce:

import org.msgpack.value.ValueFactory;

map.get(ValueFactory.newString("Tz")).toString()

Viz také v messagepack, chybě při získávání hodnoty z MapValue .. Prosím, pomozte mi (roztok nefungovala v mém případě, ale zde jsou některé návrhy, tam pro práci s různými typy, které mohou být použity v Map)

Odpovězeno 07/11/2018 v 23:50
zdroj uživatelem

hlasů
2

Mapa je mapa, takže klíč je objekt hodnotu, ale používáte Řetězec s klíčem, když děláte map.get ( „Tz“)

Můžete vytvořit objekt hodnotu pomocí TZ a pokusit se dostat na základě tohoto objektu hodnoty?

Odpovězeno 07/11/2018 v 23:43
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more