【发布时间】:2021-09-09 16:58:41
【问题描述】:
我有如下 json 对象,我需要解析并返回逗号分隔值
{
"globalCode" : "12"
"fields" : [
{
"localCode" : "72879",
"fieldValues" : [
{
"value" : null,
"subFields" : [
{
"localCode" : "980"
"subFieldValues" : [
{
"value" : "lon"
}
]
},
{
"localCode" : "98"
"subFieldValues" : [
{
"value" : "KPO"
}
]
}
]
}
]
}
]
}
我想使用 java 8 流实现以下目标。以下函数应返回字符串 "lon,KPO"
以下函数中的第 2 行,从字段数组中返回 一个字段对象 我不确定如何使用 java 8 Streams 添加其他部分。
public String getValue(){
StringBuffer buffer = new StringBuffer();
List<Field> fields = //get fields for globalCode 72879 // line 2
for(Field field : fields ){
List<FieldValue> fieldValues : field.getFieldValues();
for(FieldValue fieldValue : fieldValues)
{
if(fieldValue.getValue() != null){
buffer.append(fieldValue.getValue());
buffer.append(",");
}
else{
List<SubField> subFields = values.getSubFields();
for(SubField subField: subFields ){
List<SubFieldValue> subFieldValues : subField.getSubFieldValues();
for(SubFieldValue subFieldValue : subFieldValues ){
buffer.append(subFieldValue.getValue());
buffer.append(",");
}
}
}
}
}
return buffer.toString();
}
【问题讨论】:
-
嗨!你的代码有效吗?有些语句甚至无法在 java 中编译,例如
List<SubField> subFields = values.getSubFields();,您的代码中没有values对象。请提供一个工作代码示例。并且List<FieldValue> fieldValues : field.getFieldValues();行也没有编译,猜你需要用=替换:。 -
"我想使用 java 8 流实现以下目标" - 但是您还没有提供任何与 Stream 相关的代码。向我们展示您无法开始工作的 Stream 相关代码,并通过该代码描述您的问题。