From abdf4853a743105dbe93002aa580ae6bcd0abf91 Mon Sep 17 00:00:00 2001 From: David Symonds <dsymonds@golang.org> Date: Thu, 7 May 2009 15:09:32 -0700 Subject: [PATCH] Define Len() for JSON Map. R=rsc APPROVED=rsc DELTA=6 (5 added, 0 deleted, 1 changed) OCL=28398 CL=28430 --- src/lib/json/generic.go | 3 ++- src/lib/json/generic_test.go | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lib/json/generic.go b/src/lib/json/generic.go index 4393e4d080..e3194eb17f 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 ab3e24fb80..68868d7a5a 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); -- 2.30.9