Boolean value support
archived: false,
对于这种值好像Marshal的时候会丢失.变成:
"archived": ,
请问是哪个option可以控制的吗
我传入的是数组如下:
data []*jsonvalue.V
尝试使用:
v := jsonvalue.NewObject()
v.MustSet(data).At("data")
此方法导致MustMarshalString时候true/false丢失.
现在我参考文档上的方法:
v := jsonvalue.NewObject()
for i := range data {
v.MustSet(data[i]).At("data", i)
}
此时在MustMarshalString时true/false没有再丢失了.
好的,我尽快修复哈
@ilessy 大佬请问能不能把你的完整 case 贴给我呀?我看你的描述,试了一下好像没问题。应该是我理解不对?
https://go.dev/play/p/fxJOpR6MTld
package main
import (
"fmt"
jsonvalue "github.com/Andrew-M-C/go.jsonvalue"
)
func main() {
data := jsonvalue.NewArray()
data.MustSet(false).At(0, "archived")
data.MustSet(false).At(1, "archived")
v := jsonvalue.NewObject()
v.MustSet(data).At("data")
fmt.Println(v.MustMarshalString())
}
@Andrew-M-C 不好意思大神, 因为是处理API的, 所以我直接模拟一下responseBody
package main
import (
"fmt"
"os"
jsonvalue "github.com/Andrew-M-C/go.jsonvalue"
)
const bodyString = `{
"data": [
{
"basicInfo": {
"applicationId": 200228827,
"archived": true,
"invitationUpdateStatus": 0
}
},
{
"basicInfo": {
"applicationId": 200228828,
"archived": false,
"invitationUpdateStatus": 0
}
}
]
}`
var bodyBytes = []byte(bodyString)
func main() {
var candidateInfoArr []*jsonvalue.V
responseData, err := makeRequest()
if err != nil {
fmt.Println("Error making initial request:", err)
return
}
candidateInfoArr = append(candidateInfoArr, responseData.ForRangeArr()...)
saveToFile("candidateInfos.json", candidateInfoArr)
}
func makeRequest() (*jsonvalue.V, error) {
// 解码响应体
responseDataArr, err := jsonvalue.MustUnmarshalString(string(bodyBytes)).Get("data")
if err != nil {
return nil, err
}
return responseDataArr, nil
}
// 将数据保存到文件
func saveToFile(filename string, data []*jsonvalue.V) {
file, err := os.Create(filename)
if err != nil {
fmt.Println("Error creating file:", err)
return
}
defer file.Close()
v := jsonvalue.NewObject()
v.MustSet(data).At("data")
_, err = file.WriteString(v.MustMarshalString(jsonvalue.OptSetSequence(), jsonvalue.OptUTF8()))
if err != nil {
fmt.Println("Error writing data to file:", err)
}
}
结果丢失true/false:
{
"data": [
{
"basicInfo": {
"applicationId": 200228827,
"archived": ,
"invitationUpdateStatus": 0
}
},
{
"basicInfo": {
"applicationId": 200228828,
"archived": ,
"invitationUpdateStatus": 0
}
}
]
}
我在 feature/v1.3.8 分支修复了哈,大佬有空的话验证下?如果没问题的话我就打一个新的 tag
@Andrew-M-C 已测试feature/v1.3.8 调用API后可以正常显示bool值了, 非常感谢, 希望下次可以直接帮大佬修bug
done, 已发布 v1.3.8 这个包开发好久了,从我刚开始用 Go 到现在,可读性不佳 花了我好大力气才把 codebeat 评分压到刚过 B😂
欢迎提改善意见哈~~