отличные люди Genius, мне нужна помощь в решении java-проблемы, связанной с java. В программе я делаю JDBC вызов и функция возвращает строку, подобную этой:Преобразование строки Java, возвращаемой с JDBC на объект Json
[[{PROD_CD=42, SHORT_DESC=WATERFALL EDGE}, {PROD_CD=31, SHORT_DESC=N/A}, {PROD_CD=51, SHORT_DESC=OGEE EDGE}]]
Мне нужно избавиться от фигурных скобок, запятых, и сохранить его как объект JSON.
[
{
"PROD_CD": " 42",
"SHORT_DESC": "WATERFALL EDGE",
},
{
"PROD_CD": "31",
"SHORT_DESC": "N/A",
},
{
"PROD_CD": "51",
"SHORT_DESC": "OGEE EDGE",
}
]
Я высоко ценю вашу помощь
Вот что я пытался до сих пор:
@Override
public Map<String, String> getEdgeCd() {
Map<String, String> EdgeCd = new HashMap<String, String>();
Map<String,Object> temp = new HashMap<String,Object>();
try {
SimpleJdbcCall fgetEdgeCd = new SimpleJdbcCall(jdbcTemplate)
.withSchemaName("logprd")
.withCatalogName("edge_api_pkg")
.withFunctionName("DDGetEdgeCd");
temp = fgetEdgeCd.execute();
System.out.println("temp " + temp + " \n\n\n\n\n\n");
System.out.println("temp.values() " + temp.values() + " lines \n\n\n\n\n\n");
String keyList = temp.values().toString();
// ЭТО КАК ВЕРНУТЬ следующую строку:
String keyList = "[[{PROD_CD=42, SHORT_DESC=WATERFALL EDGE}, {PROD_CD=31, SHORT_DESC=N/A}, {PROD_CD=51, SHORT_DESC=OGEE EDGE}]]";
String[] currentLine;
currentLine = keyList.substring(3, keyList.length() -3).split("[}]|[{]");
String currenLineString = Arrays.toString(currentLine);
String newCurrentLineString = currenLineString.substring(1, keyList.length()-1).replaceAll("," , "").replaceAll(" EDGE" , "-Edge").replaceAll("\\s+", " ");
//System.out.println("newCurrentLineString:>"+ newCurrentLineString + "\n\n");
String[] testLine;
testLine = newCurrentLineString.split(" ");
ArrayList<LinkedHashMap<String, Object>> data = new ArrayList<LinkedHashMap<String, Object>>();
LinkedHashMap<String, Object> map=new LinkedHashMap<String, Object>();
Collection<String> keyValue = null;
for(int i=0; i< testLine.length; i++) {
String[] temp = testLine[i].toString().split("=");
keyValue.addAll(Arrays.asList(temp));
System.out.println("keyValue"+i + ":>"+ keyValue.toString() + "\n\n");
for (int j=0; j < keyValue.size(); j+=2) {
map.put(temp[j].toString(), temp[j+1].toString());
//map.put(keyValue[i].toString(), keyValue[i+1].toString());
//System.out.println("mapmain:>"+ map.toString() + "\n\n");
data.add(map);
System.out.println(map.toString());
System.out.println(data.toString());
}//end for j
}end for i
} catch (Exception e) {
logger.error("Error trying JDBC");
}
return EdgeCd;
}
}
Вы пробовали писать код? – Abubakkar
Вы пишете этот метод или это строка, предоставленная базой данных? Если да, какую базу данных вы используете? – Thomas
@AbubakkarRangara Я попробовал – WalkerChou