It is usually simplest to serialize all the data in msgpack, instead of JSON.
You should be able to use the transaction method .bytes() (https://github.com/algorand/java-algorand-sdk/blob/develop/src/main/java/com/algorand/algosdk/transaction/Transaction.java#L1202) to serialize the transaction in Java.
Then, in JS, you can use https://github.com/algorand/js-algorand-sdk/blob/3999aa43fc3d945b38419339c593bb5fd72e49c6/src/main.js#L195, if you just need to append a multisig signature.
You can also use algosdk.decodeObj to decode the transaction, followed by https://github.com/algorand/js-algorand-sdk/blob/3999aa43fc3d945b38419339c593bb5fd72e49c6/src/transaction.js#L141