如何在单个函数golang中从不同文件解码两个不同的结构?

浦那:

我想对两种不同的结构进行解码,以将数据保存到集合中。但它给出了错误。

在这两个文件的下面给出了两个结构,这些文件位于名为models的文件夹中

User.go

type User struct {
 Id                         int         `json:"id" bson:"_id,omitempty"`
 FirstName                  string      `json:"first_name,omitempty" bson:"first_name,omitempty"`
 LastName                   string      `json:"last_name,omitempty" bson:"last_name,omitempty"`
 EmailId                    string      `json:"email_id,omitempty" bson:"email_id,omitempty"`
 Password                   string      `json:"password,omitempty" bson:"password,omitempty"`
 PhoneNumber                string      `json:"phone_number,omitempty" bson:"phone_number,omitempty"`
 AltPhoneNumber             string      `json:"alt_phone_number" bson:"alt_phone_number"`
 Gender                     string      `json:"gender,omitempty" bson:"gender,omitempty"`
 Note                       string      `json:"note,omitempty" bson:"note,omitempty"`
}

Provider.go

type Provider struct {
 Id                      int                `json:"id" bson:"_id,omitempty"`
 Uid                     int                `json:"uid" bson:"uid,omitempty"`
 Speed                   string             `json:"speed,omitempty" bson:"speed,omitempty"`
 ProviderCategory        string             `json:"provider_category,omitempty" bson:"provider_category,omitempty"`
 Priority                int                `json:"priority,omitempty" bson:"priority,omitempty"`
}

我试图将其解码的代码

import (
    "encoding/json"
    "go-training/models"
    "github.com/gin-gonic/gin"
    "fmt"
)

var provider models.Provider
var user models.User

func SaveProvider(c *gin.Context) {
    response := ResponseController{}
    //decode the struct
    providerErr := json.NewDecoder(c.Request.Body).Decode(&provider)
    fmt.Println(providerErr) //Output:- nil
    userErr := json.NewDecoder(c.Request.Body).Decode(&user)
    fmt.Println(userErr) //output:- EOF
    if userErr != nil {
        fmt.Println("data is not properly formatted")
    }
    if providerErr != nil {
        fmt.Printl?("data is not properly formatted")
    }
}

以json格式输入的数据-

{
 "Id":1,
 "Uid":1,
 "speed":"new",
 "provider_category":"WL",
 "priority":1,
 "first_name":"puneet",
 "last_name":"jindal",
 "email_id":"[email protected]",
 "password":"poiuytrewq",
 "phone_number":"9876543210",
 "alt_phone_number":"9876543210",
 "gender":"male",
 "note":"phase 7"
}    

错误:-EOF

我怎么解决这个问题?谁能帮我?谢谢。

松饼上衣:

问题中的代码不起作用,因为第一个解码器读取了整个请求正文。第二个解码器从EOF开始。

解决方法是将主体吸附到一个字节片中,然后从该片中解组两次:

// slurp up the body.  p is a []byte
p, err := ioutil.ReadAll(c.Request.Body)
if err != nil {
   // handler error
}

var provider models.Provider
if err := json.Unmarshal(p, &provider); err != nil {
    // handle error
}

var user models.User
if err := json.Unmarshal(p, &user); err != nil {
     // handle error
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

您如何在Golang中修改此结构以接受两个不同的结果?

如何在类中为两个不同的构造函数中的不同初始化的两个不同任务创建单个HashMap成员

如何在同一包中但从不同文件访问未导出的功能

Git:如何区分不同分支中的两个不同文件?

如何比较两个不同文件夹中的文件并执行条件复制

从不同文件加载时,两个CSS之间的“指定”顺序由什么决定?

git diff在两个不同文件夹中的两个不同存储库之间

如何在Django的单个函数中传递两个不同的参数?

如何为Bash中两个不同文件中的两个不同字符串的输出着色

如何在ReactNative中从不同文件(无类/组件)调用组件函数

如何区分两个不同目录中的不同文件并将不同文件存储在新目录中

比较两个不同文件中的两个元组

AWK-比较两个不同文件中两个变量的值

如何从不同文件夹中删除2个同名文件?

如何在单个终端中运行两个不同文件夹的两个“ python manage.py runserver”命令

如何比较两个不同文件的两列

汞:如何获取两个不同文件的差异?

两个不同文件夹中的两个不同的wordpress网站

比较单个文件的片段或两个不同文件的部分

如何在javascript中总结两个不同的函数

如何检查两个不同文件中是否出现相同的文本

如何合并两个不同文本文件中的值?

Python - 如何在两个不同文件夹中一一比较文件

如何递归比较两个不同文件夹中的用户和组?

如何根据两个不同文本文件中的相同行打印值

如何从不同目录导入两个文件?

如何在docker-compose的不同文件夹中运行两个shell命令

如何在一个请求中解码两个不同的响应 JSON?

用 awk 比较两个不同文件中的两个数值范围