2016-02-16 28 views
0

我是Java新手。我正在做這樣的json字符串中的一些連接工作。如何爲各種並置操作編寫函數

String JSONstring = {"page_1":"{\"city\":\"Delhi\",\"locality\":\"Alaknanda\",\"Name_of_Person\":\"Varun Patil\",\"User_email_address\":\"[email protected]\",\"user_phone_number\":\"\",\"sub_locality\":\"\",\"street_name\":\"Pune\",\"home_plot_no\":\"xyz\",\"pin_code\":\"411060\",\"project_society_build_name\":\"\",\"landmark_reference_1\":\"\",\"landmark_reference_2\":\"\",\"No_of_Schools\":20,\"No_of_Hospitals\":20,\"No_of_Metro\":0,\"No_of_Mall\":20,\"No_of_Park\":20,\"Distance_of_schools\":1.51,\"Distance_of_Hospitals\":2.5,\"Distance_of_Metro\":0,\"Distance_of_Mall\":1.9,\"Distance_of_Park\":1.1,\"lat\":28.5304408,\"lng\":77.2505733,\"ipinfo\":{\"ip\":\"59.88.97.45\",\"hostname\":\"No Hostname\",\"city\":\"Pune\",\"region\":\"Maharashtra\",\"country\":\"IN\",\"loc\":\"18.5333,73.8667\",\"org\":\"AS9829 National Internet Backbone\",\"postal\":\"411001\"}}","page_2":"{\"home_type\":\"Flat\",\"area\":\"1000\",\"beds\":\"2 BHK\",\"bath_rooms\":2,\"building_age\":\"3\",\"floors\":\"\",\"balcony\":1,\"amenities\":\"regular\",\"amenities_options\":{\"gated_security\":\"\",\"physical_security\":\"\",\"cctv_camera\":\"\",\"controll_access\":\"\",\"elevator\":\"\",\"power_back_up\":\"\",\"parking\":\"\",\"partial_parking\":\"\",\"onsite_maintenance_store\":\"\",\"open_garden\":\"\",\"party_lawn\":\"\",\"amenities_balcony\":\"\",\"club_house\":\"\",\"fitness_center\":\"\",\"swimming_pool\":\"\",\"party_hall\":\"\",\"tennis_court\":\"\",\"basket_ball_court\":\"\",\"squash_coutry\":\"\",\"amphi_theatre\":\"\",\"business_center\":\"\",\"jogging_track\":\"\",\"convinience_store\":\"\",\"guest_rooms\":\"\"},\"interior\":\"regular\",\"interior_options\":{\"tiles\":\"\",\"marble\":\"\",\"wooden\":\"\",\"modular_kitchen\":\"\",\"partial_modular_kitchen\":\"\",\"gas_pipe\":\"\",\"intercom_system\":\"\",\"air_conditioning\":\"\",\"partial_air_conditioning\":\"\",\"wardrobe\":\"\",\"sanitation_fixtures\":\"\",\"false_ceiling\":\"\",\"partial_false_ceiling\":\"\",\"recessed_lighting\":\"\"},\"location\":\"regular\",\"location_options\":{\"good_view\":\"\",\"transporation_hub\":\"\",\"shopping_center\":\"\",\"hospital\":\"\",\"school\":\"\",\"ample_parking\":\"\",\"park\":\"\",\"temple\":\"\",\"bank\":\"\",\"less_congestion\":\"\",\"less_pollution\":\"\"},\"maintenance\":\"\",\"maintenance_value\":\"\",\"near_by\":{\"school\":\"\",\"hospital\":\"\",\"mall\":\"\",\"park\":\"\",\"metro\":\"\"},\"city\":\"Delhi\",\"locality\":\"Alaknanda\",\"token\":\"9a2a8bf359494054f98c80009b5bd0e7\"}"} 
    // removing slashes in JSON input 
    String jsonFormattedString = JSONString.replaceAll("\\\\", ""); 
    // // removing quote next to the city column 
    String city_column = replaceCharAt(jsonFormattedString, 10, ""); 
    // // removing quotes at start and end of the inputs 
    String quote_end = city_column.replaceAll("^\"|\"$", ""); 
    // // removing quote next to page_2 
    String remove_brace = quote_end.replace("page_2\":\"", "page_2\":"); 
    // // appending braces at the end of the line 
    String append_brace = remove_brace.replace("}}\"", "}}"); 
    String input = append_brace.substring(0, append_brace.length() - 2); 
    String final_input = input.concat("}"); 

    JSONObject obj = new JSONObject(final_input); 

是否有任何功能來做到這一點代碼優化?

+0

你在做什麼? OMG! – Andreas

+0

OMG!這是一個非常大的工作。據我所知,沒有這樣的功能。除了上面的函數,你可以使用String.split(正則表達式),以便在刪除不需要的字符或單詞後得到對。 – Suyash

+0

你的問題不清楚。第一行不是有效的Java,其餘的代碼非常脆弱。只要JSON字符串的佈局中的ANYTHING發生更改,它就會中斷。你爲什麼不想使用[真正的JSON解析器](https://github.com/FasterXML/jackson)? –

回答

0

第一行是一個無效的Java語句,但假設您只是顯示要解析的字符串值,它是一個有效的JSON字符串。

如果將字符串解析爲JSON,則將獲得具有2個值的JSON對象:page_1page_2

如果提取的page_1的價值,你會得到以下字符串:

{"city":"Delhi","locality":"Alaknanda","Name_of_Person":"Varun Patil","User_email_address":"[email protected]","user_phone_number":"","sub_locality":"","street_name":"Pune","home_plot_no":"xyz","pin_code":"411060","project_society_build_name":"","landmark_reference_1":"","landmark_reference_2":"","No_of_Schools":20,"No_of_Hospitals":20,"No_of_Metro":0,"No_of_Mall":20,"No_of_Park":20,"Distance_of_schools":1.51,"Distance_of_Hospitals":2.5,"Distance_of_Metro":0,"Distance_of_Mall":1.9,"Distance_of_Park":1.1,"lat":28.5304408,"lng":77.2505733,"ipinfo":{"ip":"59.88.97.45","hostname":"No Hostname","city":"Pune","region":"Maharashtra","country":"IN","loc":"18.5333,73.8667","org":"AS9829 National Internet Backbone","postal":"411001"}} 

如果再解析爲JSON,你會得到一個JSON對象,它的格式是這樣的:

{ 
    "city":"Delhi", 
    "locality":"Alaknanda", 
    "Name_of_Person":"Varun Patil", 
    "User_email_address":"[email protected]", 
    "user_phone_number":"", 
    "sub_locality":"", 
    "street_name":"Pune", 
    "home_plot_no":"xyz", 
    "pin_code":"411060", 
    "project_society_build_name":"", 
    "landmark_reference_1":"", 
    "landmark_reference_2":"", 
    "No_of_Schools":20, 
    "No_of_Hospitals":20, 
    "No_of_Metro":0, 
    "No_of_Mall":20, 
    "No_of_Park":20, 
    "Distance_of_schools":1.51, 
    "Distance_of_Hospitals":2.5, 
    "Distance_of_Metro":0, 
    "Distance_of_Mall":1.9, 
    "Distance_of_Park":1.1, 
    "lat":28.5304408, 
    "lng":77.2505733, 
    "ipinfo":{ 
     "ip":"59.88.97.45", 
     "hostname":"No Hostname", 
     "city":"Pune", 
     "region":"Maharashtra", 
     "country":"IN", 
     "loc":"18.5333,73.8667", 
     "org":"AS9829 National Internet Backbone", 
     "postal":"411001" 
    } 
} 

同樣,您也可以解析page_2的值。

所以,你所要做的就是雙解析原始輸入。

+0

沒有什麼適合我的。其他幫助? –

+1

@EvangelineLydia Nope。在「沒有任何作用」的細節層面上,我的答案是「嘗試改變某些東西」,但那不是很有幫助,現在呢?也許你應該閱讀「[如何創建一個最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve)」 – Andreas

相關問題