相关疑难解决方法(0)

JSON和Protocol Buffers之间是否存在标准映射?

来自对公告博客帖子的评论:

关于JSON:JSON的结构类似于协议缓冲区,但协议缓冲区二进制格式仍然更小,编码速度更快.尽管如此,JSON为协议缓冲区提供了一个很好的文本编码 - 编写一个编码器/解码器,使用protobuf反射将任意协议消息转换为JSON和从JSON转换,这是微不足道的.这是与AJAX应用程序通信的好方法,因为用户在访问您的页面时下载完整的protobuf解码器可能太多了.

制作一个映射可能是微不足道的,但两者之间是否有一个"明显"的映射,任何两个独立的开发团队自然会解决这个问题?如果两个产品支持PB数据并且可以互操作,因为它们共享相同的.proto规范,我想知道如果他们独立引入相同规范的JSON反射,他们是否仍然能够互操作.可能会有一些任意的决定,例如,枚举值是由字符串表示的(人类可读的典型JSON)还是整数值?

那么是否存在已建立的映射,以及用于从.proto规范生成JSON编码器/解码器的任何开源实现?

json protocol-buffers

26
推荐指数
3
解决办法
3万
查看次数

如何转换Json至Protobuf?

我是新手使用protobuf,并想知道是否有一种简单的方法将json流/字符串转换为Java中的protobuf流/字符串?

例如,

protoString = convertToProto(jsonString)
Run Code Online (Sandbox Code Playgroud)

我有一个json字符串,我想解析为protobuf消息.所以,我想首先将json字符串转换为protobuf,然后调用Message.parseFrom()它.

在此先感谢您的帮助!

java json protocol-buffers

23
推荐指数
2
解决办法
3万
查看次数

在java中为通用protobuffer类调用parseFrom()方法

我正在调用api来获取输入流,然后调用静态方法parseFrom(inputstream)将其转换为protobuffclass.

如果我使用特定的类来实现它的工作原理:

public CustomerDTOOuterClass.CustomerDTO GetCustomer()
{
    CustomerDTOOuterClass.CustomerDTO customer = null;
    try
    {
        URL url = new URL("https://localhost:44302/Api/customer/1?");

        HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("Content-Type", "application/x-protobuf");
        conn.connect();

        InputStream is = conn.getInputStream();

        CustomerDTOOuterClass.CustomerDTO customer =
                CustomerDTOOuterClass.CustomerDTO.parseFrom(is);

        conn.disconnect();
    }
    catch(Exception ex)
    {
        System.out.println("[ "+ex.getMessage()+" ]");
    }

    return customer;
}
Run Code Online (Sandbox Code Playgroud)

但是如果我将它改为泛型类型它会失败,因为T没有方法parseFrom,我可以在T中实现任何接口,所以我可以调用parseFrom方法吗?

public T GetObject()
{
    T object = null;
    try
    {
        URL url = new URL("https://localhost:44302/Api/customer/1?");

        HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("Content-Type", "application/x-protobuf");
        conn.connect();

        InputStream is = conn.getInputStream();

        T object = T.parseFrom(is);

        conn.disconnect();
    }
    catch(Exception …
Run Code Online (Sandbox Code Playgroud)

java generics protocol-buffers

9
推荐指数
3
解决办法
6031
查看次数

标签 统计

protocol-buffers ×3

java ×2

json ×2

generics ×1