From c95c27a91ff41d2cd1f5ced53b07e068acd58ace Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Mon, 23 Nov 2009 18:11:00 -0800 Subject: [PATCH] json: expose map in generic representation R=r, r1 https://golang.org/cl/157146 --- src/pkg/json/generic.go | 3 +++ src/pkg/json/generic_test.go | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/pkg/json/generic.go b/src/pkg/json/generic.go index eed8f9daa2..0140b50e48 100644 --- a/src/pkg/json/generic.go +++ b/src/pkg/json/generic.go @@ -33,6 +33,7 @@ type Json interface { Get(s string) Json; // field lookup (MapKind) Elem(i int) Json; // element lookup (ArrayKind) Len() int; // length (ArrayKind, MapKind) + Map() map[string]Json; // map form (MapKind) } // JsonToString returns the textual JSON syntax representation @@ -63,6 +64,7 @@ func (*_Null) Bool() bool { return false } func (*_Null) Get(s string) Json { return Null } func (*_Null) Elem(int) Json { return Null } func (*_Null) Len() int { return 0 } +func (*_Null) Map() map[string]Json { return nil } type _String struct { s string; @@ -158,6 +160,7 @@ func (j *_Map) String() string { s += "}"; return s; } +func (j *_Map) Map() map[string]Json { return j.m } // Walk evaluates path relative to the JSON object j. // Path is taken as a sequence of slash-separated field names diff --git a/src/pkg/json/generic_test.go b/src/pkg/json/generic_test.go index 7fc7bcc55a..5b660f268f 100644 --- a/src/pkg/json/generic_test.go +++ b/src/pkg/json/generic_test.go @@ -5,6 +5,7 @@ package json import ( + "reflect"; "testing"; ) @@ -73,4 +74,7 @@ func TestJsonMap(t *testing.T) { t.Errorf("MapTest: Walk(%#q) => %v, want %v", k, v1, v) } } + if !reflect.DeepEqual(values, mapv.Map()) { + t.Errorf("DeepEqual(values, mapv.Map()) failed") + } }