【问题标题】:Convert byte[] to JSONObject java将 byte[] 转换为 JSONObject java
【发布时间】:2016-02-10 00:41:47
【问题描述】:

我在 SO 和其他有类似问题的地方看到了很多链接,但都没有帮助。

这是我的代码:

import java.util.Queue;
import java.util.LinkedList;

import javax.xml.bind.DatatypeConverter;

import org.json.simple.JSONObject;

import kafka.consumer.ConsumerIterator;
import kafka.consumer.KafkaStream;


public class ConsumerThread implements Runnable {

    private KafkaStream<byte[], byte[]> stream;

    public static Queue<JSONObject> message = (Queue<JSONObject>) new LinkedList<JSONObject>();

    public ConsumerThread(KafkaStream<byte[], byte[]> stream){
        this.stream = stream;
    }

    @Override
    public void run() {
        // TODO Auto-generated method stub
        ConsumerIterator<byte[], byte[]> it = stream.iterator();
        while (it.hasNext()){
            byte[] msg = it.next().message();
            System.out.println(new String(msg));
            message.add(DatatypeConverter.printBase64Binary(msg));
        }
    }

}

这在最后一行给出错误:

message.add

我只是想将这个byte[] 转换为JSONObject 可以推送到队列,我不确定是什么问题。

【问题讨论】:

  • DatatypeConverter.printBase64Binary(msg) 返回一个 Base64 字符串。 String不是JSONObject。您必须构建一个 包含 字符串的JSONObject;这可以添加到队列中。

标签: java json kafka-consumer-api


【解决方案1】:

怎么样

import java.util.Queue;
import java.util.LinkedList;

import javax.xml.bind.DatatypeConverter;

import org.json.simple.JSONObject;

import kafka.consumer.ConsumerIterator;
import kafka.consumer.KafkaStream;


public class ConsumerThread implements Runnable {

    public static final String JSON_MESSAGE_FIELD_NAME = "message_b64";

    private KafkaStream<byte[], byte[]> stream;

    public static Queue<JSONObject> message = (Queue<JSONObject>) new LinkedList<JSONObject>();

    public ConsumerThread(KafkaStream<byte[], byte[]> stream){
        this.stream = stream;
    }

    @Override
    public void run() {

        ConsumerIterator<byte[], byte[]> it = stream.iterator();
        while (it.hasNext()){
            byte[] msg = it.next().message();
            System.out.println(new String(msg));

            final JSONObject json = new JSONObject();
            json.put(JSON_MESSAGE_FIELD_NAME, DatatypeConverter.printBase64Binary(msg)); 

            message.add(json);
        }
    }

}

?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-08
    • 2021-05-25
    • 2016-05-14
    • 2014-04-18
    • 2011-06-08
    • 2014-05-04
    • 1970-01-01
    • 2019-02-03
    相关资源
    最近更新 更多