2010-04-13 34 views
6

Đối với ứng dụng iPhone của tôi, tôi đang sử dụng dịch vụ RESTful và nhận JSON. Tôi đã tìm thấy các thư viện để deserialize này vào một NSDictionary. Tuy nhiên, tôi tự hỏi nếu có bất kỳ thư viện để deserialize JSON/NSDictionary/Danh sách tài sản vào đối tượng của tôi (một tùy ý ở bên cạnh tôi).Ánh xạ đối tượng trong mục tiêu-c (iphone) từ JSON

Tương đương java sẽ là các trình ánh xạ đối tượng quan hệ mặc dù loại ánh xạ đối tượng mà tôi đang tìm kiếm là tương đối đơn giản (các kiểu dữ liệu đơn giản, không có mối quan hệ phức tạp, v.v.).

Tôi nhận thấy rằng Objective-C không có mâu thuẫn nên có vẻ như về mặt lý thuyết có thể nhưng tôi chưa tìm thấy thư viện để làm điều đó.

Hoặc là có cách đơn giản để tải đối tượng từ đối tượng NSDictionary/Property List không yêu cầu sửa đổi mỗi khi đối tượng thay đổi?

Ví dụ:

{ "id" : "user1", 
    "name" : "mister foobar" 
    "age" : 20 } 

được nạp vào đối tượng

@interface User : NSObject { 
NSString *id; 
NSString *name; 
int *age; 
} 
+0

tuổi không có biểu tượng dấu sao vì nó là một số nguyên –

Trả lời

5

Hãy nhìn vào giao thức NSKeyValueCoding. Cụ thể, các phương pháp setValuesForKeysWithDictionary: và dictionaryWithValuesForKeys:

+0

ảnh vui nhộn. Cảm ơn paull. Tôi không biết rằng NSObject đã hỗ trợ loại giao thức này. Tôi có thể viết bản vẽ đơn giản của riêng tôi ngay bây giờ. – pschang

1

Hãy xem dự án Loid trên Sourceforge. Mục đích của tôi là cung cấp những gì bạn đang nói về.

Ngay bây giờ, khung công tác có thể thiết kế ngược mô tả Meta về một đối tượng (chẳng hạn như đối tượng "Người dùng") và có thể tuần tự hóa đến và từ đối tượng LoidTypeData. Mục đích của tôi là tạo một cá thể LoidTypeData từ một khối JSON đến và sau đó liên kết nó với đối tượng. Tất nhiên, ngược lại cũng sẽ ở đó.

Đây là mã nguồn mở và GPL. Bạn sẽ cần phải truy cập mã từ SVN tại thời điểm này, không hoàn toàn biết làm thế nào để xây dựng distro cho Mac.

- Frank

Các vấn đề liên quan