2013-03-30 71 views
0

我們在我們的應用程序中解析了很多JSON - 沒有後端,它將是一個非常無用的應用程序。我知道這也適用於其他一些應用程序。爲了解析JSON,我們需要一個鍵列表來獲取數據。我想知道什麼被認爲是「最佳實踐」,或者至少是管理這些路徑/字符串文字的'該死的好實踐'。有沒有幫助管理這些密鑰並減少重複的工具?管理用於解析JSON的字符串文字的工具

  1. 硬編碼它們絕對不是一個選擇,儘管坦率地說,如果我們的後端程序員改變的關鍵,在概念上,一個簡單的查找/替換的XCode(或者你使用任何IDE)就足夠了。這是醜陋的,不乾淨的,我只是覺得很髒,把字符串文字放在我的代碼中。

  2. 什麼我目前在做現在把它們放到我的PCH文件,這意味着我結束了:

    #define kBookmarksSearchResultsIDFieldName @"business.id"

    #define kBookmarksSearchResultsNameFieldName @"business.name"

    #define kBookmarksSearchResultsThumbnailURLFieldName @"business.display_image.images.small_mobile.source"

    #define kBookmarksBusinessCategoryArrayFieldName @"business.categories"

    儘管罪惡,但這真的很笨重現在我在我的PCH文件中有大約一千行這些東西。

  3. 我正在考慮的另一個選項是將這些分解成單獨的.h文件 - 但如果我的應用程序的兩個組件最終使用相同的密鑰(例如,將business對象嵌入到JSON中以進行書籤或對該業務的評論),那麼我必須導入包含business對象的JSON路徑的.h。所以在這種情況下,我仍然導入所有相同的數據,這只是文件組織更清潔。

我的目標是:

    所需/所需 用於解析JSON
  1. 減少重複量字符串字面量
  2. 輕鬆管理
  3. 容易改變替換的JSON路徑,如果/當

是我上面列出的選項3(單獨的.h文件)我最好的選擇嗎?你們使用什麼,我錯過了一個簡單的工具嗎?(不,因爲它需要你的JSON鍵匹配你的ivar /屬性名稱,所以JSONModel不是一個選項 - 我們的後端支持一些平臺,所以我們不能只爲iOS改變JSON密鑰)。

回答

1

使用諸如RestKit這樣的庫進行研究,該庫允許您將JSON文檔映射到一組Objective-C類。這意味着您可以讀取文檔並獲取可以通過屬性操作的對象數組,而不必跟蹤鍵名稱。這很容易,並且Xcode會在您使用類時自動完成您的屬性名稱。

它需要一些設置,但你只需要做一次。 :)

0

只是爲了更新這個答案 - 有一個非常酷的庫叫做Mantle - 不完美,但類型轉換有一些問題,但仍然是一個非常堅實的努力。