2016-03-03 20 views
6

Tôi đang sử dụng Microsoft.Net với Breeze cho API và kết quả tôi nhận được bằng cách sử dụng Retrofit có lồng nhau cùng một đối tượng. Ví dụ EmployeeJob có bất động sản chuyển hướng khách hàng vì vậy các API kết quả trông giống như này

{ 
    Id:1, 
    "Customer_Id": 39, 
    "Customer": { 
     "$id": "2", 
     "$type": "Wit.Trade.Entities.Customer, Wit.Trade", 
     "CourtesyTitle": "Mr", 
     "FirstName": "Ahmad" 
    } 
} 
{ 
    Id:2 
    "Customer_Id": 39, 
    "Customer": { 
     "$ref": "2" //here same customer Ahmad 
    }, 
} 

Bây giờ Java List tôi nhận được những EmployeeJobs chỉ Customer trong hồ sơ đầu tiên có và những người khác không có gì. Làm cách nào để tôi có thể ánh xạ số $ref:"2" thành giá trị ban đầu thay vì số này $ref.

Tôi không muốn API máy chủ của tôi để gửi các đối tượng hoàn chỉnh cho mạng và hiệu suất lý do, đó là lý do tại sao tôi muốn deserialize những $refs về phía khách hàng giống như Angularjs $resource service làm cho chúng ta.

+0

Bạn đã tìm thấy câu trả lời cho câu hỏi này chưa? – Lunchbox

+0

Tôi đang thực hiện việc đăng bài theo cách thủ công trong câu trả lời cho bạn. – ahmadalibaloch

Trả lời

0

Hiện nay tôi đã làm việc arround bằng tay cho các giải pháp $ ref như thế này

//========== $ref manual solution for employee jobs' customers 
      List<Customer> completedCustomers = new ArrayList<>(); 
      for (EmployeeJob empJob : empJobs) { 
       if (empJob.Customer != null && empJob.Customer.Id == null && empJob .Customer.$ref != null) { 
        for (Customer comCus : completedCustomers) { 
         if (comCus.$id.equalsIgnoreCase(empJob.Customer.$ref)) 
          empJob.Customer = comCus; 
        } 
       } else 
        completedCustomers.add(empJob.Customer); 
      } 

Bây giờ empJobs có refs $ thay thế với khách hàng tương ứng của họ.

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