list解析,兼容空list
This commit is contained in:
parent
4d83580f69
commit
d424a2fd20
@ -75,25 +75,29 @@ func (jg *JSON2GO) Parse(inputJSON string) (string, error) {
|
|||||||
func (jg *JSON2GO) parseArray(key string, parseResult gjson.Result) {
|
func (jg *JSON2GO) parseArray(key string, parseResult gjson.Result) {
|
||||||
// 先遍历一遍确认所有数据类型都相同
|
// 先遍历一遍确认所有数据类型都相同
|
||||||
dataType := ""
|
dataType := ""
|
||||||
for _, item := range parseResult.Array() {
|
if len(parseResult.Array()) > 0 {
|
||||||
if len(dataType) == 0 {
|
for _, item := range parseResult.Array() {
|
||||||
dataType = jg.getDataType(item)
|
if len(dataType) == 0 {
|
||||||
continue
|
dataType = jg.getDataType(item)
|
||||||
}
|
|
||||||
currentType := jg.getDataType(item)
|
|
||||||
if currentType != dataType {
|
|
||||||
if (dataType == "int64" && currentType == "float64") || (dataType == "float64" && currentType == "int64") {
|
|
||||||
dataType = "float64"
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
// 不是所有数据类型都一致
|
currentType := jg.getDataType(item)
|
||||||
if len(key) == 0 {
|
if currentType != dataType {
|
||||||
jg.result += "interface{}"
|
if (dataType == "int64" && currentType == "float64") || (dataType == "float64" && currentType == "int64") {
|
||||||
|
dataType = "float64"
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
// 不是所有数据类型都一致
|
||||||
|
if len(key) == 0 {
|
||||||
|
jg.result += "interface{}"
|
||||||
|
return
|
||||||
|
}
|
||||||
|
jg.append(jg.buildField("[]interface{}", key))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
jg.append(jg.buildField("[]interface{}", key))
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
dataType = "interface{}"
|
||||||
}
|
}
|
||||||
// 对象,重新
|
// 对象,重新
|
||||||
if dataType == "object" {
|
if dataType == "object" {
|
||||||
@ -101,6 +105,7 @@ func (jg *JSON2GO) parseArray(key string, parseResult gjson.Result) {
|
|||||||
r, _ := instance.Parse(parseResult.Array()[0].String())
|
r, _ := instance.Parse(parseResult.Array()[0].String())
|
||||||
dataType = strings.Replace(strings.Replace(r, "type", "", 1), "Automatic", "", 1)
|
dataType = strings.Replace(strings.Replace(r, "type", "", 1), "Automatic", "", 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 所有数据类型都一致
|
// 所有数据类型都一致
|
||||||
if len(key) == 0 {
|
if len(key) == 0 {
|
||||||
jg.append("[]" + dataType)
|
jg.append("[]" + dataType)
|
||||||
|
Loading…
Reference in New Issue
Block a user