gpt4 book ai didi

go - 使用不同的json键进行编码和解码

转载 作者:行者123 更新时间:2023-12-01 20:23:58 27 4
gpt4 key购买 nike

我有什么:某种API的两种结构

type BaseUser struct {
ID int64 `json:"user_id"`
Name string `json:"user_name"`
Email string `json:"user_email"`
}



type UserWithAddress struct {
BaseUser
Postal string `json:"user_postal"`
City string `json:"user_city"`
Street string `json:"user_street"`
}

我想做什么:将json key 从snake_case转换为camelCase。
可以说,这是一个请求正文
{
"user_id": 123,
"user_name": "test",
"user_email": "test@mail.com",
"user_postal": "12312",
"user_city": "city",
"user_street": "street"
}

因此,经过某种转换后,我希望获得此输出
{
"userId": 123,
"userName": "test",
"userEmail": "test@mail.com",
"userPostal": "12312",
"userCity": "city",
"userStreet": "street"
}

目前如何处理:我使用camelCase json标签制作了另外两个结构

type BaseUserCamelCase struct {
ID int64 `json:"userId"`
Name string `json:"userName"`
Email string `json:"userEmail"`
}



type UserWithAddressCamelCase struct {
BaseUserCamelCase
Postal string `json:"userPostal"`
City string `json:"userCity"`
Street string `json:"userStreet"`
}

我的转变看起来像

var userWithAddressCamelCase UserWithAddressCamelCase

userWithAddressCamelCase.BaseUserCamelCase = BaseUserCamelCase(userWithAddress.BaseUser)
//I can't cast whole userWithAddressCamelCase object to another type because of different field names - BaseUser and BaseUserCamelCase
userWithAddressCamelCase.Name = userWithAddress.Name
userWithAddressCamelCase.Email = userWithAddress.Email
userWithAddressCamelCase.Postal = userWithAddress.Postal
//and so on

我不喜欢它,因为如果 BaseUserUserWithAddress会长大,我必须在 %CamelCase结构中添加适当的字段。

我的问题:还有另一种更有效的方式来处理键转换吗?

最佳答案

Is there another more efficient way to handle keys transformation?



不。

(好吧,基于您对“有效”的定义。您可以使用反射,但是我不推荐这样做。您的代码非常好。如果结构增加,您可以添加几行简单代码。简单代码没有错这不会产生错误,并且在执行过程中很快。仅仅因为它看起来不花哨,并不意味着这里有任何“改进”的地方。

关于go - 使用不同的json键进行编码和解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60927182/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com