gpt4 book ai didi

java - 如何在Apache thrift中以JSON列表输出

转载 作者:行者123 更新时间:2023-12-01 04:19:23 24 4
gpt4 key购买 nike

我目前正在使用以下代码:

TSerializer serializer = new TSerializer(
new TJSONProtocol.Factory());

Log.print("[ \"rec\","+list.size()+",");
for (int i = 0; i < list.size(); i++) {
if(i!=0) Log.print(",");
Log.print(serializer
.toString((TBase) (list.get(i))));
}

该列表是 ArrayList<RFileMetadata>()数据结构,例如我得到以下输出:

[
"rec",
3,
{
"1": {
"str": "allalla"
},
"2": {
"i64": 91299230
}
},
{
"1": {
"str": "allalla"
},
"2": {
"i64": 91299230
}
},
{
"1": {
"str": "allalla"
},
"2": {
"i64": 91299230
}
}
]

但是如何直接输出呢?

我要求的代码不使用 for 循环来手动打印 ["rec",3,....]等等。我不应该生成,程序应该为我生成它。

最佳答案

您不必显式创建 json 字符串,然后将其字符串化。Apache thrift 提供了一种更好的方法来做到这一点。

如果您查看 FileStore 的代码,它在我的本地 Thrift 上的名称相同。

List<RFileMetadata> struct = client.listOwnedFiles(userName);

jsonProtocol.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.size()));

for (RFileMetadata _iter3 : struct) {
_iter3.write(jsonProtocol);
}

jsonProtocol.writeListEnd();

如果您探索更多 thrift 代码,您将更容易理解 thrift 的实际工作原理。

关于java - 如何在Apache thrift中以JSON列表输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19108446/

24 4 0