mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
parser/metadecoders: Add empty /data JSON file as empty map
When fetching JSON files from the /data folder that are empty they will be added as empty map[string]any. This makes sure that no empty JSON file causes the site to crash because of a failed unmarshal. This happens because empty is not a valid JSON string. It is therefore important to check the lenght of the data before passing it to the JSON unmarshal function. Fixes #8601
This commit is contained in:
parent
ad2059878a
commit
e30d711c29
2 changed files with 2 additions and 1 deletions
|
@ -112,7 +112,7 @@ func (d Decoder) UnmarshalStringTo(data string, typ any) (any, error) {
|
||||||
// Unmarshal will unmarshall data in format f into an interface{}.
|
// Unmarshal will unmarshall data in format f into an interface{}.
|
||||||
// This is what's needed for Hugo's /data handling.
|
// This is what's needed for Hugo's /data handling.
|
||||||
func (d Decoder) Unmarshal(data []byte, f Format) (any, error) {
|
func (d Decoder) Unmarshal(data []byte, f Format) (any, error) {
|
||||||
if data == nil {
|
if data == nil || len(data) == 0 {
|
||||||
switch f {
|
switch f {
|
||||||
case CSV:
|
case CSV:
|
||||||
return make([][]string, 0), nil
|
return make([][]string, 0), nil
|
||||||
|
|
|
@ -122,6 +122,7 @@ func TestUnmarshalToInterface(t *testing.T) {
|
||||||
}{
|
}{
|
||||||
{`[ "Brecker", "Blake", "Redman" ]`, JSON, []any{"Brecker", "Blake", "Redman"}},
|
{`[ "Brecker", "Blake", "Redman" ]`, JSON, []any{"Brecker", "Blake", "Redman"}},
|
||||||
{`{ "a": "b" }`, JSON, expect},
|
{`{ "a": "b" }`, JSON, expect},
|
||||||
|
{``, JSON, map[string]any{}},
|
||||||
{`#+a: b`, ORG, expect},
|
{`#+a: b`, ORG, expect},
|
||||||
{`#+DATE: <2020-06-26 Fri>`, ORG, map[string]any{"date": "2020-06-26"}},
|
{`#+DATE: <2020-06-26 Fri>`, ORG, map[string]any{"date": "2020-06-26"}},
|
||||||
{`a = "b"`, TOML, expect},
|
{`a = "b"`, TOML, expect},
|
||||||
|
|
Loading…
Reference in a new issue