Index: src/java/org/apache/hcatalog/data/JsonSerDe.java =================================================================== --- src/java/org/apache/hcatalog/data/JsonSerDe.java (revision 1293524) +++ src/java/org/apache/hcatalog/data/JsonSerDe.java (working copy) @@ -321,7 +321,28 @@ throws SerDeException { StringBuilder sb = new StringBuilder(); try { - buildJSONString(sb, obj, objInspector); + + StructObjectInspector soi = (StructObjectInspector) objInspector; + List structFields = soi.getAllStructFieldRefs(); + assert (columnNames.size() == structFields.size()); + if (obj == null) { + sb.append("null"); + } else { + sb.append(SerDeUtils.LBRACE); + for (int i = 0; i < structFields.size(); i++) { + if (i > 0) { + sb.append(SerDeUtils.COMMA); + } + sb.append(SerDeUtils.QUOTE); + sb.append(columnNames.get(i)); + sb.append(SerDeUtils.QUOTE); + sb.append(SerDeUtils.COLON); + buildJSONString(sb, soi.getStructFieldData(obj, structFields.get(i)), + structFields.get(i).getFieldObjectInspector()); + } + sb.append(SerDeUtils.RBRACE); + } + } catch (IOException e) { LOG.warn("Error ["+ e.getMessage()+"] generating json text from object"); throw new SerDeException(e);