@@ -41,7 +41,7 @@ pub enum Json {
41
41
}
42
42
43
43
pub type List = ~[ Json ] ;
44
- pub type Object = HashMap < ~str , Json > ;
44
+ pub type Object = TreeMap < ~str , Json > ;
45
45
46
46
#[ deriving( Eq ) ]
47
47
/// If an error occurs while parsing some JSON, this is the structure which is
@@ -809,7 +809,7 @@ impl<T : iterator::Iterator<char>> Parser<T> {
809
809
self . bump ( ) ;
810
810
self . parse_whitespace ( ) ;
811
811
812
- let mut values = ~HashMap :: new ( ) ;
812
+ let mut values = ~TreeMap :: new ( ) ;
813
813
814
814
if self . ch == '}' {
815
815
self . bump ( ) ;
@@ -1087,7 +1087,7 @@ impl serialize::Decoder for Decoder {
1087
1087
let len = match self . stack. pop( ) {
1088
1088
Object ( obj) => {
1089
1089
let len = obj. len( ) ;
1090
- for obj. consume ( ) . advance |( key, value) | {
1090
+ for obj. consume_iter ( ) . advance |( key, value) | {
1091
1091
self . stack. push( value) ;
1092
1092
self . stack. push( String ( key) ) ;
1093
1093
}
@@ -1294,19 +1294,19 @@ impl<A:ToJson> ToJson for ~[A] {
1294
1294
fn to_json ( & self ) -> Json { List ( self . map ( |elt| elt. to_json ( ) ) ) }
1295
1295
}
1296
1296
1297
- impl < A : ToJson > ToJson for HashMap < ~str , A > {
1297
+ impl < A : ToJson > ToJson for TreeMap < ~str , A > {
1298
1298
fn to_json ( & self ) -> Json {
1299
- let mut d = HashMap :: new ( ) ;
1299
+ let mut d = TreeMap :: new ( ) ;
1300
1300
for self . iter( ) . advance |( key, value) | {
1301
1301
d. insert( ( * key) . clone( ) , value. to_json( ) ) ;
1302
1302
}
1303
1303
Object ( ~d)
1304
1304
}
1305
1305
}
1306
1306
1307
- impl <A : ToJson > ToJson for TreeMap < ~str , A > {
1307
+ impl <A : ToJson > ToJson for HashMap < ~str , A > {
1308
1308
fn to_json( & self ) -> Json {
1309
- let mut d = HashMap : : new( ) ;
1309
+ let mut d = TreeMap : : new( ) ;
1310
1310
for self . iter( ) . advance |( key, value) | {
1311
1311
d. insert( ( * key) . clone( ) , value. to_json( ) ) ;
1312
1312
}
@@ -1338,11 +1338,11 @@ mod tests {
1338
1338
1339
1339
use super:: * ;
1340
1340
1341
- use std : : hashmap:: HashMap ;
1342
1341
use std : : io;
1343
1342
use std:: result;
1344
1343
1345
- use extra:: serialize:: Decodable ;
1344
+ use serialize:: Decodable ;
1345
+ use treemap:: TreeMap ;
1346
1346
1347
1347
#[ deriving( Eq , Encodable , Decodable ) ]
1348
1348
enum Animal {
@@ -1363,7 +1363,7 @@ mod tests {
1363
1363
}
1364
1364
1365
1365
fn mk_object( items: & [ ( ~str, Json ) ] ) -> Json {
1366
- let mut d = ~HashMap : : new( ) ;
1366
+ let mut d = ~TreeMap : : new( ) ;
1367
1367
1368
1368
for items. iter( ) . advance |item| {
1369
1369
match * item {
@@ -1954,7 +1954,7 @@ mod tests {
1954
1954
fn test_decode_map() {
1955
1955
let s = ~" { \" a\" : \"Dog \" , \"b\" : [ \" Frog \" , \"Henry \" , 349 ] } ";
1956
1956
let mut decoder = Decoder(from_str(s).unwrap());
1957
- let mut map: HashMap <~str, Animal> = Decodable::decode(&mut decoder);
1957
+ let mut map: TreeMap <~str, Animal> = Decodable::decode(&mut decoder);
1958
1958
1959
1959
assert_eq!(map.pop(&~" a"), Some(Dog));
1960
1960
assert_eq!(map.pop(&~" b"), Some(Frog(~" Henry ", 349)));
0 commit comments