我有一个用Java编写的自定义rest控件。一切都适用于字符串字段,但不适用于多值字符串字段。我的代码返回
“[Value1,Value2,Value3 ...]”。请注意,值周围没有逗号。在网页上,输出如下所示:
如果我可以在值周围使用逗号,那么前端框架可以轻松解析它。
我试图解析字段中的值并使其格式正确,但似乎无法正确使用。
第一组代码适用于字符串。第二种是尝试为多值字段工作。
非常感谢任何帮助。
writer.startProperty("chgTitle");
writer.outStringLiteral(String.valueOf(columnValues.get(0)));
writer.endProperty();
writer.startProperty("plpAffected");
Object tmpObj = columnValues.get(5);
if (tmpObj instanceof Vector) {
String[] copyArr = new String[((Vector) tmpObj).size()];
((Vector) tmpObj).copyInto(copyArr);
writer.outStringLiteral(String.valueOf(copyArr));
} else {
}
writer.endProperty();
答案 0 :(得分:2)
我会建议采用略有不同的方法。我喜欢强制我的JSON结构在任何可能出现多值的情况下使用数组。它看起来像你正在使用Philippe Riand's specialized JSON writer,所以我会假设。
以下是我将如何攻击它:
writer.startProperty("chgTitle");
writer.outStringLiteral(String.valueOf(columnValues.get(0)));
writer.endProperty();
writer.startProperty("plpAffected");
Vector<?> tmpVec = Util.getValueAsVector(columnValues.get(5));
writer.startArray();
for ( Object ob : tmpVec ) {
writer.startArrayItem();
// assuming String contents
writer.outStringLiteral(String.valueOf(ob));
writer.endArrayItem();
}
writer.endArray();
writer.endProperty();
要回滚columnValues
,我正在使用a Java equivalent的my SSJS getValueAsVector
helper function。它检查Vector
或ArrayList
,我碰巧几乎只使用它;如果不是,则将其推入新的Vector
。这是该方法的样子,
public static Vector<?> getValueAsVector(Object obj) {
if(obj instanceof java.util.Vector){
return (Vector<?>) obj;
}else if( obj instanceof ArrayList ) {
List<?> o = (List<?>) obj;
Vector<Object> tmpVec = new Vector<Object>();
for(int i=0;i<o.size();i++){
tmpVec.add(o.get(i));
}
return tmpVec;
}else {
Vector<Object> tmpVec = new Vector<Object>();
tmpVec.add(obj);
return tmpVec;
}
}