Skip to content

Inconsistent interface of fastjson.GetString( data, "key") and value Get("key").String() #98

Description

@salmonix

fastjson.GetString( data, "key") return a string leaving the escape characters at place.
However, when data is parsed and the key is accessed, the return value is always without escape characters.

fastjson.GetString( data, "key" ) -> returns string without escape characters
fastjson.Parse(data).Get("key").String() -> returns string with escape characters, but in a " " ( ??? )
fastjson.Parse(data).GetStringBytes("key") -> returns []bytes made from a string without escape characters.

package modifiers

import (
    "testing"

    "github.com/valyala/fastjson"
)


func TestEscaping(t *testing.T){

    data := []byte(`{"key":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"}`)

    direct := fastjson.GetString(data, "key")

    parsed,_ := fastjson.ParseBytes(data)
    parsedKey := parsed.Get("key").String()
    t.Log("direct GetString:  ",direct)
    t.Log("parsed Get.String: ",parsedKey)

    parsedKeyBytes := parsed.GetStringBytes("key")
    t.Log("parsed GetStringBytes : ",string(parsedKeyBytes))

    parsed,_ = fastjson.Parse(string(data))
    parsedKey = parsed.Get("key").String()
    t.Log("direct GetString:  ",direct)
    t.Log("parsed Get.String: ",parsedKey)

    parsedKeyBytes = parsed.GetStringBytes("key")
    t.Log("parsed GetStringBytes : ",string(parsedKeyBytes))
}

 fastj_test.go:18: direct GetString:                 <?xml version="1.0" encoding="UTF-8"?>
 fastj_test.go:19: parsed Get.String:            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
 fastj_test.go:22: parsed GetStringBytes :   <?xml version="1.0" encoding="UTF-8"?>
 fastj_test.go:26: direct GetString:                <?xml version="1.0" encoding="UTF-8"?>
 fastj_test.go:27: parsed Get.String:           "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
 fastj_test.go:30: parsed GetStringBytes :   <?xml version="1.0" encoding="UTF-8"?>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions