對于一個很長的問題,我提前道歉。希望你能忍受我。我正在使用goweb庫,并嘗試使用示例 Web 應用程序。我一直在嘗試修改RESTful 示例代碼,它將 a 定義Thing為:type Thing struct { Id string Text string}AThing是通過向 發送HTTP Post帶有適當JSON正文的請求來創建的http://localhost:9090/things。這是在Create函數的示例代碼中處理的,特別是以下幾行:dataMap := data.(map[string]interface{})thing := new(Thing)thing.Id = dataMap["Id"].(string)thing.Text = dataMap["Text"].(string)這一切都很好,我可以運行示例服務器(偵聽http://localhost:9090/)并且服務器按預期運行。例如:curl -X POST -H "Content-Type: application/json" -d '{"Id":"TestId","Text":"TestText"}' http://localhost:9090/things沒有錯誤返回,然后我GET是Thing用curl http://localhost:9090/things/TestId它返回{"d":{"Id":"TestId","Text":"TestText"},"s":200}到現在為止還挺好?,F在,我想修改Thing類型,并添加自定義ThingText類型,如下所示:type ThingText struct { Title string Body string}type Thing struct { Id string Text ThingText}這本身不是問題,我可以Create像這樣修改函數:thing := new(Thing)thing.Id = dataMap["Id"].(string)thing.Text.Title = dataMap["Title"].(string)thing.Text.Body = dataMap["Body"].(string)并運行前一個curl POST請求,JSON設置為:{"Id":"TestId","Title":"TestTitle","Title":"TestBody"}它返回沒有錯誤。我再次可以GET訪問ThingURL,它返回:{"d":{"Id":"TestId","Text":{"Title":"TestTitle","Body":"TestBody"}},"s":200}再一次,到目前為止,很好?,F在,我的問題:如何修改Create函數以允許我對其進行POST復雜JSON處理?例如,JSON上面最后返回的字符串包括{"Id":"TestId","Text":{"Title":"TestTitle","Body":"TestBody"}}. 我希望能夠POST 精確JSON到端點并Thing創建。我已經按照代碼回來了,似乎該data變量的類型Context.RequestData()來自https://github.com/stretchr/goweb/context,而內部Map似乎是Object.Map來自https://github.com/stretchr的類型/stew/,描述為“具有附加有用功能的地圖[字符串]接口{}?!?特別是,我注意到“支持點語法來設置深度值”。我不知道如何設置thing.Text.Title = dataMap...語句以便將正確的JSON字段解析為它。除了 中的string類型之外,我似乎無法使用任何其他內容dataMap,如果我嘗試這樣JSON做,則會出現類似于以下內容的錯誤: http: panic serving 127.0.0.1:59113: interface conversion: interface is nil, not string再次對這個可笑的長問題表示抱歉。我非常感謝您的閱讀,以及您可能需要提供的任何幫助。謝謝!
- 1 回答
- 0 關注
- 206 瀏覽
添加回答
舉報
0/150
提交
取消
