summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Symonds <dsymonds@golang.org>2009-05-07 15:09:32 -0700
committerDavid Symonds <dsymonds@golang.org>2009-05-07 15:09:32 -0700
commit18b76c1defcd74c5fe41561c6209dbbe5fa1021c (patch)
treeca68dbba36a4393bb66b79fdbe3f57955272b8ac
parentf079e0ea0dc3d3fa97cc6d2f138766a40e63ec89 (diff)
downloadgolang-18b76c1defcd74c5fe41561c6209dbbe5fa1021c.tar.gz
Define Len() for JSON Map.
R=rsc APPROVED=rsc DELTA=6 (5 added, 0 deleted, 1 changed) OCL=28398 CL=28430
-rw-r--r--src/lib/json/generic.go3
-rw-r--r--src/lib/json/generic_test.go4
2 files changed, 6 insertions, 1 deletions
diff --git a/src/lib/json/generic.go b/src/lib/json/generic.go
index 4393e4d08..e3194eb17 100644
--- a/src/lib/json/generic.go
+++ b/src/lib/json/generic.go
@@ -33,7 +33,7 @@ type Json interface {
Bool() bool; // boolean (BoolKind)
Get(s string) Json; // field lookup (MapKind)
Elem(i int) Json; // element lookup (ArrayKind)
- Len() int; // length (ArrayKind)
+ Len() int; // length (ArrayKind, MapKind)
}
// JsonToString returns the textual JSON syntax representation
@@ -112,6 +112,7 @@ func (j *_Bool) String() string {
type _Map struct { m map[string]Json; _Null }
func (j *_Map) Kind() int { return MapKind }
+func (j *_Map) Len() int { return len(j.m) }
func (j *_Map) Get(s string) Json {
if j.m == nil {
return Null
diff --git a/src/lib/json/generic_test.go b/src/lib/json/generic_test.go
index ab3e24fb8..68868d7a5 100644
--- a/src/lib/json/generic_test.go
+++ b/src/lib/json/generic_test.go
@@ -64,6 +64,10 @@ func TestJsonMap(t *testing.T) {
if mapv == nil {
t.Fatalf("StringToJson(%#q) => nil, %v, %v", mapstr, ok, errtok);
}
+ if cnt := mapv.Len(); cnt != len(jsontests) {
+ t.Errorf("StringToJson(%#q).Len() => %v, want %v", mapstr, cnt,
+ len(jsontests));
+ }
for k,v := range values {
if v1 := mapv.Get(k); !Equal(v1, v) {
t.Errorf("MapTest: Walk(%#q) => %v, want %v", k, v1, v);