@SuppressWarnings("unchecked") @Override protected ODataProperty read(ODataReaderContext context, JSONObject json) { if (json.isNull() || json.isArray()) { throw ODataErrors.badRequest("invalid json content"); } Map<String, Object> map = json.map(); if (map.size() == 1 && Maps.containsKeyIgnoreCase(map, "d")) { map = (Map<String, Object>) map.get("d"); } if (map.size() == 1) { String propName = map.keySet().iterator().next(); EdmEntityType edmEntityType = context.getEntityType(); EdmProperty edmProperty = edmEntityType.findProperty(propName); return new ODataPropertyImpl(edmProperty, map.get(propName)); } else throw ODataErrors.badRequest("invalid json content"); }