Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Если вам нужно преобразовать XML-документ в JSON с неизвестной структурой, вы можете использовать goxml2json .
Пример:
import (
// Other imports ...
xj "github.com/basgys/goxml2json"
)
func (u *UserResource) authenticateUser(request *restful.Request, response *restful.Response) {
// Extract data from restful.Request
xml := strings.NewReader(`<?xml version="1.0" encoding="UTF-8"?><app version="1.0"><request>1111</request></app>`)
// Convert
json, err := xj.Convert(xml)
if err != nil {
// Oops...
}
// ... Use JSON ...
}
Примечание: я являюсь автором этой библиотеки.
blockquote>
Общий ответ на ваш вопрос о том, как преобразовать XML-вход в вывод JSON, может быть примерно таким:
http://play.golang.org/p/7HNLEUnX-m
package main
import (
"encoding/json"
"encoding/xml"
"fmt"
)
type DataFormat struct {
ProductList []struct {
Sku string `xml:"sku" json:"sku"`
Quantity int `xml:"quantity" json:"quantity"`
} `xml:"Product" json:"products"`
}
func main() {
xmlData := []byte(`<?xml version="1.0" encoding="UTF-8" ?>
<ProductList>
<Product>
<sku>ABC123</sku>
<quantity>2</quantity>
</Product>
<Product>
<sku>ABC123</sku>
<quantity>2</quantity>
</Product>
</ProductList>`)
data := &DataFormat{}
err := xml.Unmarshal(xmlData, data)
if nil != err {
fmt.Println("Error unmarshalling from XML", err)
return
}
result, err := json.Marshal(data)
if nil != err {
fmt.Println("Error marshalling to JSON", err)
return
}
fmt.Printf("%s\n", result)
}
<?xml version="1.0" encoding="UTF-8"?><hello>world</hello>
) json, err: = xj.Convert (xml), если err! = nil {panic («Это неудобно ...»)} fmt.Println (json.String ()) // {"hello": "world"}} – luizfelipetx 17 March 2017 в 16:02