food 데이터베이스 API의 데이터 피드를 사용하여 tableview에 사용되는 Food 클래스를 작성합니다.json의 데이터가 포함 된 Food 클래스의 적절한 구조
이 클래스의 올바른 구조는 무엇입니까? 물론 영양 가치 (예 : 칼로리)가 측정 값과 함께 변경되지는 않았지만 각 영양소가 영양 값 (예 : 칼로리)에 따라 달라지는 경우 이는 당연한 것입니다.
"report": {
...
"food": {
...
"name": "Cheese, cheddar",
...
"nutrients": [
{
...
"unit": "kcal",
...
"measures": [
{
"label": "cup, diced",
"eqv": 132.0,
"eunit": "g",
"qty": 1.0,
"value": "48.87"
},
{
"label": "cup, melted",
"eqv": 244.0,
"eunit": "g",
"qty": 1.0,
"value": "90.33"
},
내 초기 아이디어는 먼저 나중에 클래스를 구조화 데이터에 액세스하는 것이 었습니다 :
json으로이 (https://api.nal.usda.gov/ndb/reports/?ndbno=01009&type=f&format=json&api_key=DEMO_KEY)과 같이 보입니다. 이것은 내가 한 것입니다 :
지금은 단지 각 영양소 값을 추출합니다. 누구든지 응용 프로그램을 구조화하는 방법에 대한 지침을 줄 수 다음 데이터를 피드 수 있습니다. 그럼 당신은 단지를 사용하여이 모델로 JSON을 디코딩 할 수
struct Measure: Codable {
let label: String
let eqv: Double
let unit: String
let qty: Int
let value: String
}
struct Nutrient: Codable {
let unit: String
let measures: [Measure]
}
struct Food: Codable {
let name: String
let nutrients: [Nutrient]
}
:
귀하의 답변은 내가 원하는 내용이었습니다. 나는 json의 정보를 가지고 클래스의 구조를 설정하는 방법을 생각할 수 없었다. 그걸 감안할 때 위의 코드에서 보았 듯이 피라미드를 피하지 않고 json을 디코딩 할 수있는 간단한 방법이 있습니까? – vas
예, 마지막 행. 모델이 코드 가능 프로토콜을 따르고 속성의 이름이 JSON의 키와 동일한 경우 JSONDecoder가 데이터를 변환 할 수 있어야합니다. – bughana
이 가이드는 JSONDecoder의 작동 방식에 대해 자세히 알고 싶다면 매우 유용합니다. http://benscheirman.com/2017/06/ultimate-guide-to-json-parsing-with-swift-4/ – bughana