Javaを使用して分類されたビューからJson Stringを作成したいと思いますが、Jsonの子カテゴリを親の下に置くことができませんでした。XPages:分類されたビューからJson Stringを作成する
{ "識別子": "ID"、 "ラベル": "州"、 "アイテム":[
はそれがかのうJSONを生成するかどうかを知るでしょう、私は以下の出力をgeting保ちます2レベルの分類されたビューからの文字列、またはそれを達成するためのより良い方法があるかどうか。
public ResponseWriter getJSONData() {
long startTime = System.currentTimeMillis();
FacesContext facesContext = FacesContext.getCurrentInstance();
ResponseWriter resWriter = facesContext.getResponseWriter();
//StringWriter stringOut = new StringWriter();
JsonWriter writer = new JsonWriter(resWriter,false);
Database db = null;
try {
writer.startObject();
writer.startProperty("identifier");
writer.outStringLiteral("id");
writer.endProperty();
writer.startProperty("label");
writer.outStringLiteral("State");
writer.endProperty();
writer.startProperty("items");
writer.startArray();
db = DominoUtils.getCurrentSession().getCurrentDatabase();
View lookupDB = db.getView("StateAndCity");
//Document doc = lookupDB.getFirstDocument();
ViewNavigator nav = lookupDB.createViewNav();
ViewEntry ve = nav.getFirst();
boolean run =false;
while (ve != null){
counter++;
Vector cv = ve.getColumnValues();
int level = ve.getIndentLevel();
String levelTitle = (String) cv.get(level);
writer.startArrayItem();
writer.startObject();
if (ve.isCategory()) {
if (run) {
writer.endArrayItem();
writer.endArray();
}
run= true;
writer.startArrayItem();
writer.startProperty("id");
writer.outStringLiteral(getID());
writer.endProperty();
writer.startProperty("title");
writer.outStringLiteral(levelTitle);
writer.endProperty();
writer.startProperty("category");
writer.outStringLiteral("true");
writer.endProperty();
writer.startProperty("children");
writer.startArray();
}else{
writer.startArrayItem();
writer.startObject();
Document doc = ve.getDocument();
writer.startProperty("id");
writer.outStringLiteral(getID());
writer.endProperty();
writer.startProperty("docId");
writer.outStringLiteral(doc.getUniversalID());
writer.endProperty();
writer.startProperty("title");
writer.outStringLiteral(levelTitle);
writer.endProperty();
writer.startProperty("category");
writer.outStringLiteral("false");
writer.endProperty();
writer.endObject();
writer.endArrayItem();
}
ViewEntry tmpentry = nav.getNext();
ve.recycle();
ve = tmpentry;
}
writer.endArray();
writer.endProperty();
writer.endObject();
long endTime = System.currentTimeMillis();
long totalTime = endTime - startTime;
//System.out.println("running time: "+totalTime);
writer.flush();
return resWriter;
}catch (NotesException e) {
e.printStackTrace();
}
return resWriter;
}
UPDATE: は、タイプの下が、2つのレベルのカテゴリの状態でこれのグリッドをレコード生成するために、私のリターンJSONを使用したいと市
は私のJavaメソッドでありますJSON出力
{
"identifier": "id",
"label": "name",
"items": [{
"id": "AK",
"type": "state",
"state": "AK",
"childItems": [{
"id": "Anchorage",
"type": "city",
"city": "Anchorage",
"numPeople": "2",
"childItems": [{
"id": "B3093953178C98E905257838007ABC48",
"firstname": "Bella",
"lastname": "Martin",
"valueToAdd": "2"
},
{
"id": "7FDB9CCDE7D6923E05257838007ABC1E",
"firstname": "Brian",
"lastname": "Leggett",
"valueToAdd": "2"
}
]
}]
....
}]
}
しかし、出力を使ってTreeGridを作成することはできません。つまり、Javaを使用して、必要なフィールドやアイテムをまとめて定義しています。 –
OK、JSONの特定の構造が必要です。必要な出力で質問を修正できますか? JsonWriterとJsonのserilizationの2つの方法があります。後のGSONについては良い選択です(たとえばVerse on Premで使用) – stwissel
私は質問を更新しました –