主頁 > .NET開發 > 列舉解碼器json資料swift

列舉解碼器json資料swift

2021-12-18 07:10:30 .NET開發

我嘗試從 api 解碼 json,為此我使用這個網站:https : //app.quicktype.io/

這是我來自 api 的 json:

{
     "id":"7d37091c-f214-491a-a50c-d289f0f7e255",
     "uuid":"7d37091c-f214-491a-a50c-d289f0f7e255",
     "brand":"Nike",
     "breadcrumbs":[
        
     ],
     "browseVerticals":[
        "sneakers"
     ],
     "category":"Nike Dunk",
     "charityCondition":0,
     "childId":null,
     "colorway":"White/Black-Total Orange",
     "condition":"New",
     "countryOfManufacture":"VN",
     "dataType":"product",
     "description":"",
     "hidden":false,
     "listingType":"standard",
     "minimumBid":25,
     "gender":"men",
     "doppelgangers":[
        
     ],
     "media":{
        "imageUrl":"https://images.stockx.com/images/Nike-Dunk-Low-Black-White-2021.jpg?fit=fill&bg=FFFFFF&w=700&h=500&auto=format,compress&trim=color&q=90&dpr=2&updated_at=1624941957",
        "smallImageUrl":"https://images.stockx.com/images/Nike-Dunk-Low-Black-White-2021.jpg?fit=fill&bg=FFFFFF&w=300&h=214&auto=format,compress&trim=color&q=90&dpr=2&updated_at=1624941957",
        "thumbUrl":"https://images.stockx.com/images/Nike-Dunk-Low-Black-White-2021.jpg?fit=fill&bg=FFFFFF&w=140&h=100&auto=format,compress&trim=color&q=90&dpr=2&updated_at=1624941957",
        "gallery":[
           
        ],
        "hidden":false
     },
     "name":"Black White (2021)",
     "productCategory":"sneakers",
     "releaseDate":"",
     "releaseTime":0,
     "belowRetail":false,
     "retailPrice":110,
     "shoe":"Nike Dunk High",
     "shortDescription":"Nike-Dunk-Low-Black-White-2021",
     "styleId":"DD1399-105",
     "tickerSymbol":"NK-NIDLFDXWB",
     "title":"Nike Dunk High Black White (2021)",
     "traits":[
        {
           "name":"Style",
           "value":"DD1399-105",
           "filterable":true,
           "visible":true,
           "highlight":true
        },
        {
           "name":"Colorway",
           "value":"White/Black-Total Orange",
           "filterable":true,
           "visible":true,
           "highlight":true
        },
        {
           "name":"Retail Price",
           "value":110,
           "filterable":true,
           "visible":true,
           "highlight":false
        },
        {
           "name":"Featured",
           "value":false,
           "filterable":false,
           "visible":false,
           "highlight":false
        }
     ],
     "type":0,
     "urlKey":"nike-dunk-high-black-white-total-orange-2021",
     "year":0,
     "shoeSize":null,
     "market":{
        "productId":0,
        "skuUuid":"",
        "productUuid":"7d37091c-f214-491a-a50c-d289f0f7e255",
        "lowestAsk":173,
        "lowestAskSize":"15",
        "parentLowestAsk":0,
        "numberOfAsks":196,
        "hasAsks":1,
        "salesThisPeriod":69,
        "salesLastPeriod":0,
        "highestBid":220,
        "highestBidSize":"9.5",
        "numberOfBids":230,
        "hasBids":1,
        "annualHigh":297,
        "annualLow":67,
        "deadstockRangeLow":238,
        "deadstockRangeHigh":274,
        "volatility":0.070391,
        "deadstockSold":5891,
        "pricePremium":1.627,
        "averageDeadstockPrice":175,
        "lastSale":256,
        "lastSaleSize":"10.5",
        "salesLast72Hours":69,
        "changeValue":51,
        "changePercentage":0.249544,
        "absChangePercentage":0.249544,
        "totalDollars":1029494,
        "lastLowestAskTime":1639141012,
        "lastHighestBidTime":1639160362,
        "lastSaleDate":"2021-12-11T00:55:16 00:00",
        "createdAt":"2021-06-29T04:46:03 00:00",
        "updatedAt":1639184839,
        "deadstockSoldRank":37,
        "pricePremiumRank":1,
        "averageDeadstockPriceRank":42,
        "featured":0
     },
     "_tags":[
        "sneakers",
        "nike",
        "nike",
        "dunk",
        "style_id|dd1399-105",
        "retail_price|110",
        "colorway|white/black-total orange"
     ],
     "lock_selling":false,
     "selling_countries":[
        "AD",
        "AE",
       
     ],
     "buying_countries":[
        "AD",
        "AE",
        "ES",
        "US",
        "XK",
        "IC",
        "IN"
     ],
     "objectID":"7d37091c-f214-491a-a50c-d289f0f7e255"
  }

這是我的預覽提供程式:

class DeveloperPreview {

static let instance = DeveloperPreview()
init() { }

let sneaker = Sneakers(
     id:"7d37091c-f214-491a-a50c-d289f0f7e255",
     uuid:"7d37091c-f214-491a-a50c-d289f0f7e255",
     brand:"Nike",
     breadcrumbs:[
        
     ],
     browseVerticals:[
        "sneakers"
     ],
     category:"Nike Dunk",
     charityCondition:0,
     childID: JSONNull(),
     colorway:"White/Black-Total Orange",
     condition:"New",
     countryOfManufacture:"VN",
     dataType:"product",
     welcomeDescription: "welcom",
     hidden:false,
     listingType:"standard",
     minimumBid:25,
     gender:"men",
     doppelgangers:[
        
     ],
     media: Media(
        imageURL:"https://images.stockx.com/images/Nike-Dunk-Low-Black-White-2021.jpg?fit=fill&bg=FFFFFF&w=700&h=500&auto=format,compress&trim=color&q=90&dpr=2&updated_at=1624941957",
        smallImageURL:"https://images.stockx.com/images/Nike-Dunk-Low-Black-White-2021.jpg?fit=fill&bg=FFFFFF&w=300&h=214&auto=format,compress&trim=color&q=90&dpr=2&updated_at=1624941957",
        thumbURL:"https://images.stockx.com/images/Nike-Dunk-Low-Black-White-2021.jpg?fit=fill&bg=FFFFFF&w=140&h=100&auto=format,compress&trim=color&q=90&dpr=2&updated_at=1624941957",
        gallery:[
           
        ],
        hidden:false

     ),
     name:"Black White (2021)",
     productCategory:"sneakers",
     releaseDate:"",
     releaseTime:0,
     belowRetail:false,
     retailPrice:110,
     shoe:"Nike Dunk High",
     shortDescription:"Nike-Dunk-Low-Black-White-2021",
     styleID:"DD1399-105",
     tickerSymbol:"NK-NIDLFDXWB",
     title:"Nike Dunk High Black White (2021)",
     traits: [traits],
     type:0,
     urlKey:"nike-dunk-high-black-white-total-orange-2021",
     year:0,
     shoeSize: JSONNull(),
     market: Market(
        productID:0,
        skuUUID:"",
        productUUID:"7d37091c-f214-491a-a50c-d289f0f7e255",
        lowestAsk:173,
        lowestAskSize:"15",
        parentLowestAsk:0,
        numberOfAsks:196,
        hasAsks:1,
        salesThisPeriod:69,
        salesLastPeriod:0,
        highestBid:220,
        highestBidSize:"9.5",
        numberOfBids:230,
        hasBids:1,
        annualHigh:297,
        annualLow:67,
        deadstockRangeLow:238,
        deadstockRangeHigh:274,
        volatility:0.070391,
        deadstockSold:5891,
        pricePremium:1.627,
        averageDeadstockPrice:175,
        lastSale:256,
        lastSaleSize:"10.5",
        salesLast72Hours:69,
        changeValue:51,
        changePercentage:0.249544,
        absChangePercentage:0.249544,
        totalDollars:1029494,
        lastLowestAskTime:1639141012,
        lastHighestBidTime:1639160362,
        lastSaleDate:"2021-12-11T00:55:16 00:00",
        createdAt:"2021-06-29T04:46:03 00:00",
        updatedAt:1639184839,
        deadstockSoldRank:37,
        pricePremiumRank:1,
        averageDeadstockPriceRank:42,
        featured:0
     ),
     tags:[
        "sneakers",
        "nike",
        "nike",
        "dunk",
        "style_id|dd1399-105",
        "retail_price|110",
        "colorway|white/black-total orange"
     ],
     lockSelling:false,
     sellingCountries:[
        "AD",
        "AE",
        "US",
        "IN"
     ],
     buyingCountries:[
        "AD",
        "AE",
        "IN"
     ],
     objectID:"7d37091c-f214-491a-a50c-d289f0f7e255"
)

let traits = Trait(
   name:"Style",
   value: .bool(true),
   filterable:true,
   visible:true,
   highlight:true
)

這是我的解碼器:

struct Trait: Codable {
    let name: String
    let value: Value
    let filterable, visible, highlight: Bool
}

enum Value: Codable {
    case bool(Bool)
    case integer(Int)
    case string(String)

    init(from decoder: Decoder) throws {
        let container = try decoder.singleValueContainer()
        if let x = try? container.decode(Bool.self) {
            self = .bool(x)
            return
        }
        if let x = try? container.decode(Int.self) {
            self = .integer(x)
            return
        }
        if let x = try? container.decode(String.self) {
            self = .string(x)
            return
        }
        throw DecodingError.typeMismatch(Value.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for Value"))
    }

    func encode(to encoder: Encoder) throws {
        var container = encoder.singleValueContainer()
        switch self {
        case .bool(let x):
            try container.encode(x)
        case .integer(let x):
            try container.encode(x)
        case .string(let x):
            try container.encode(x)
        }
    }
}

我的錯誤來自預覽提供者:

“不能在屬性初始值設定項中使用實體成員 'traits';屬性初始值設定項在 'self' 可用之前運行”

在此處輸入圖片說明

uj5u.com熱心網友回復:

該錯誤是由編譯器準確指出的。從 API 回應轉換,這應該在錯誤片段上按預期作業。

 traits: [
          Trait(
           name:"Style",
           value: .string("DD1399-105"),
           filterable:true,
           visible:true,
           highlight:true
          ),
          Trait(
           name:"Colorway",
           value: .string("White/Black-Total Orange"),
           filterable:true,
           visible:true,
           highlight:true
          ),
          Trait(
           name:"Retail Price",
           value: .integer(110),
           filterable:true,
           visible:true,
           highlight:false
          ),
          Trait(
           name:"Featured",
           value: .bool(false),
           filterable:false,
           visible:false,
           highlight:false
          )
],

uj5u.com熱心網友回復:

您不能在類的頂層初始化相互依賴的屬性,您必須在內部創建特征 let sneaker = Sneakers( ...

代替

traits: [traits],

 traits: [Trait(
      name:"Style",
      value: .bool(true),
      filterable:true,
      visible:true,
      highlight:true)],

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/384053.html

標籤:迅速

上一篇:Swift,在每個按鈕點擊時增加一個數字

下一篇:如何使用SwiftUI通過按鈕移動到另一個視圖-swift5.5

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • WebAPI簡介

    Web體系結構: 有三個核心:資源(resource),URL(統一資源識別符號)和表示 他們的關系是這樣的:一個資源由一個URL進行標識,HTTP客戶端使用URL定位資源,表示是從資源回傳資料,媒體型別是資源回傳的資料格式。 接下來我們說下HTTP. HTTP協議的系統是一種無狀態的方式,使用請求/ ......

    uj5u.com 2020-09-09 22:07:47 more
  • asp.net core 3.1 入口:Program.cs中的Main函式

    本文分析Program.cs 中Main()函式中代碼的運行順序分析asp.net core程式的啟動,重點不是剖析原始碼,而是理清程式開始時執行的順序。到呼叫了哪些實體,哪些法方。asp.net core 3.1 的程式入口在專案Program.cs檔案里,如下。ususing System; us ......

    uj5u.com 2020-09-09 22:07:49 more
  • asp.net網站作為websocket服務端的應用該如何寫

    最近被websocket的一個問題困擾了很久,有一個需求是在web網站中搭建websocket服務。客戶端通過網頁與服務器建立連接,然后服務器根據ip給客戶端網頁發送資訊。 其實,這個需求并不難,只是剛開始對websocket的內容不太了解。上網搜索了一下,有通過asp.net core 實作的、有 ......

    uj5u.com 2020-09-09 22:08:02 more
  • ASP.NET 開源匯入匯出庫Magicodes.IE Docker中使用

    Magicodes.IE在Docker中使用 更新歷史 2019.02.13 【Nuget】版本更新到2.0.2 【匯入】修復單列匯入的Bug,單元測驗“OneColumnImporter_Test”。問題見(https://github.com/dotnetcore/Magicodes.IE/is ......

    uj5u.com 2020-09-09 22:08:05 more
  • 在webform中使用ajax

    如果你用過Asp.net webform, 說明你也算是.NET 開發的老兵了。WEBform應該是2011 2013左右,當時還用visual studio 2005、 visual studio 2008。后來基本都用的是MVC。 如果是新開發的專案,估計沒人會用webform技術。但是有些舊版 ......

    uj5u.com 2020-09-09 22:08:50 more
  • iis添加asp.net網站,訪問提示:由于擴展配置問題而無法提供您請求的

    今天在iis服務器配置asp.net網站,遇到一個問題,記錄一下: 問題:由于擴展配置問題而無法提供您請求的頁面。如果該頁面是腳本,請添加處理程式。如果應下載檔案,請添加 MIME 映射。 WindowServer2012服務器,添加角色安裝完.netframework和iis之后,運行aspx頁面 ......

    uj5u.com 2020-09-09 22:10:00 more
  • WebAPI-處理架構

    帶著問題去思考,大家好! 問題1:HTTP請求和回傳相應的HTTP回應資訊之間發生了什么? 1:首先是最底層,托管層,位于WebAPI和底層HTTP堆疊之間 2:其次是 訊息處理程式管道層,這里比如日志和快取。OWIN的參考是將訊息處理程式管道的一些功能下移到堆疊下端的OWIN中間件了。 3:控制器處理 ......

    uj5u.com 2020-09-09 22:11:13 more
  • 微信門戶開發框架-使用指導說明書

    微信門戶應用管理系統,采用基于 MVC + Bootstrap + Ajax + Enterprise Library的技術路線,界面層采用Boostrap + Metronic組合的前端框架,資料訪問層支持Oracle、SQLServer、MySQL、PostgreSQL等資料庫。框架以MVC5,... ......

    uj5u.com 2020-09-09 22:15:18 more
  • WebAPI-HTTP編程模型

    帶著問題去思考,大家好!它是什么?它包含什么?它能干什么? 訊息 HTTP編程模型的核心就是訊息抽象,表示為:HttPRequestMessage,HttpResponseMessage.用于客戶端和服務端之間交換請求和回應訊息。 HttpMethod類包含了一組靜態屬性: private stat ......

    uj5u.com 2020-09-09 22:15:23 more
  • 部署WebApi隨筆

    一、跨域 NuGet參考Microsoft.AspNet.WebApi.Cors WebApiConfig.cs中配置: // Web API 配置和服務 config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 二、清除默認回傳XML格式 ......

    uj5u.com 2020-09-09 22:15:48 more
最新发布
  • C#多執行緒學習(二) 如何操縱一個執行緒

    <a href="https://www.cnblogs.com/x-zhi/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2943582/20220801082530.png" alt="" /></...

    uj5u.com 2023-04-19 09:17:20 more
  • C#多執行緒學習(二) 如何操縱一個執行緒

    C#多執行緒學習(二) 如何操縱一個執行緒 執行緒學習第一篇:C#多執行緒學習(一) 多執行緒的相關概念 下面我們就動手來創建一個執行緒,使用Thread類創建執行緒時,只需提供執行緒入口即可。(執行緒入口使程式知道該讓這個執行緒干什么事) 在C#中,執行緒入口是通過ThreadStart代理(delegate)來提供的 ......

    uj5u.com 2023-04-19 09:16:49 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    <a href="https://www.cnblogs.com/huangxincheng/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/214741/20200614104537.png" alt="" /&g...

    uj5u.com 2023-04-18 08:39:04 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    一:背景 1. 講故事 前段時間協助訓練營里的一位朋友分析了一個程式卡死的問題,回過頭來看這個案例比較經典,這篇稍微整理一下供后來者少踩坑吧。 二:WinDbg 分析 1. 為什么會卡死 因為是表單程式,理所當然就是看主執行緒此時正在做什么? 可以用 ~0s ; k 看一下便知。 0:000> k # ......

    uj5u.com 2023-04-18 08:33:10 more
  • SignalR, No Connection with that ID,IIS

    <a href="https://www.cnblogs.com/smartstar/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/u36196.jpg" alt="" /></a>...

    uj5u.com 2023-03-30 17:21:52 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:15:33 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:13:31 more
  • C#遍歷指定檔案夾中所有檔案的3種方法

    <a href="https://www.cnblogs.com/xbhp/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/957602/20230310105611.png" alt="" /></a&...

    uj5u.com 2023-03-27 14:46:55 more
  • C#/VB.NET:如何將PDF轉為PDF/A

    <a href="https://www.cnblogs.com/Carina-baby/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2859233/20220427162558.png" alt="" />...

    uj5u.com 2023-03-27 14:46:35 more
  • 武裝你的WEBAPI-OData聚合查詢

    <a href="https://www.cnblogs.com/podolski/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/616093/20140323000327.png" alt="" /><...

    uj5u.com 2023-03-27 14:46:16 more