2016-02-25 120 views
0

應用程序使用Apache Cayenne。將plist格式文本轉換爲json格式

我收到以下格式的字符串。這個字符串也適用於我的HashMap格式。

{And=[(effectiveDate >= Tue Sep 01 00:00:00 EDT 2015), {And=[(loanType = 2), {Or=[{And=[{Not=[(specialFeaturesString like "*003* ")]}, {Not=[(specialFeaturesString like "*007*")]}]}, (specialFeaturesString like "*007*")]}, (specialFeaturesString like "*808*")]}]} 

我想隱蔽上面的字符串,以JSON格式像下面

{ "condition": "AND", "rules": [ { "id": "eDate", "field": "eDate", "type": "date", "input": "text", "operator": "greater_or_equal", "value": "2015/09/01" }, { "condition": "AND", "rules": [ { "id": "loanType", "field": "loanType", "type": "string", "input": "text", "operator": "equal", "value": "2" }, { "condition": "OR", "rules": [ { "id": "specialFeatureText", "field": "specialFeatureText", "type": "string", "input": "text", "operator": "equal", "value": "*707*" }, { "condition": "AND", "rules": [ { "id": "specialFeatureText", "field": "specialFeatureText", "type": "string", "input": "text", "operator": "not_equal", "value": "*003*" }, { "id": "specialFeatureText", "field": "specialFeatureText", "type": "string", "input": "text", "operator": "not_equal", "value": "*007*" } ] } ] }, { "id": "specialFeatureText", "field": "specialFeatureText", "type": "string", "input": "text", "operator": "equal", "value": "*808*" } ] } ] } 

我可能會通過地圖創建POJO和循環來實現這一目標。也許涉及一些遞歸。

我最終將上面的json提供給jQuery querybuilder。

謝謝你的幫助。

回答

0

您可以使用Jackson JSON序列化器以適當的格式將您的HashMap或POJO轉換爲JSON。例如: -

Map<String, Object> mapMatchingJsonStructure = ... 
OutputStream out = // where you want to write the output 
new ObjectMapper().writeValue(out, mapMatchingJsonStructure); 

而且卡宴在cayenne-wocompat一個的plist解析器。這與你無關,因爲你已經解析了你的plist。但我想我會提到。