--- sites/all/modules/views_datasource/views_json.module 2008-07-09 16:04:50.000000000 -0700 +++ sites/all/modules/views_datasource/views_json.module.patched 2009-03-03 13:29:02.000000000 -0800 @@ -148,9 +148,11 @@ function views_json_simple_render($vid, $view = views_load_view($vid); $result = views_build_view('items', $view); $fields = _views_get_fields(); - $json = '"nodes":'.str_repeat(" ", 4)."[\n"; + $json = '{ "nodes":'.str_repeat(" ", 4)."[\n"; + $lastNode=end($nodes); foreach ($nodes as $node) { $json.= str_repeat(" ", 6)."{\n"; + $lastField=end($view->field); foreach ($view->field as $field) { if ($fields[$field['id']]['visible'] !== false) { $label = $field['label'] ? $field['label'] : $fields[$field['fullname']]['name']; @@ -158,12 +160,20 @@ function views_json_simple_render($vid, $value = trim(views_theme_field('views_handle_field', $field['queryname'], $fields, $field, $node, $view)); $value = views_json_encode_special_chars($value); $label = str_replace("Profile ", '', $label); //strip out Profile: from profile fields - $json.=str_repeat(" ", 8).'"'.$label.'"'. " ".": ".'"'.$value.'"'.",\n"; + $json.=str_repeat(" ", 8).'"'.$label.'"'. " ".": ".'"'.$value.'"'; + if ($field != $lastField) { + $json.=","; + } + $json.="\n"; } } - $json.=str_repeat(" ", 6)."},\n\n"; + $json.=str_repeat(" ", 6)."}"; + if ($node != $lastNode) { + $json.=","; + } + $json.="\n\n"; } - $json.=str_repeat(" ", 4)."]"; + $json.=str_repeat(" ", 4)."] }"; drupal_set_header('Content-Type: text/javascript'); print $json;