Well it did for me. Maybe it was because it was part of a geoJSON response, or the fact that length/range weren't in the top level.
Below is an example I quickly hacked up after working around it:
{ "type": "FeatureCollection", "features": [ {"type": "Feature", "geometry": {"type":"LineString","coordinates":[[1771873.3744905395,5914546.578293778],[1771893.7264727666,5914543.7359237932],[1772093.2272581572,5914518.1934995847]]}, "properties": {"id":"12345","range":"12 - 19","length":"123.67","road_1":"Some Street"},"id":"12345"} ]}
It validates fine through jsonlint. I was parsing through using two loops, loop through the features, t hen loop through the properties to get the attributes out:
var obj = jQuery.parseJSON(data);
$.each(obj.features, function (key, val) {
$.each(val.properties, function(col,value){
// Process the query row data.
If I left the attribute column names as length and range then things were definitely screwy.
Simon