Convert Java String returned from JDBC to Json object -


great genius people, need in solving java problem related java. in program making jdbc call , function returns string similar this:

[[{prod_cd=42, short_desc=waterfall edge}, {prod_cd=31, short_desc=n/a}, {prod_cd=51, short_desc=ogee edge}]] 

i need rid of curly braces, commas, , save json object.

[   {     "prod_cd": " 42",     "short_desc": "waterfall edge",   },   {     "prod_cd": "31",     "short_desc": "n/a",   },   {     "prod_cd": "51",     "short_desc": "ogee edge",   } ] 

i highly appreciate help

here tried far:

@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(); 

//this returned following string:

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");      (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 j    }end       } catch (exception e) {              logger.error("error trying jdbc");     }          return edgecd;     }  } 

this answer, not, answer want.

  1. look @ data returned database. notice has obvious pattern.
  2. there 3 basic objects in data returned database; array, container object, key-value pair. array array of container objects. container object contains 1 or more key-value pairs. key-value pair composed of 2 string values.
  3. create parser parses data returned database. recommend against attempting "fix" regular expression, parse code.
  4. using 3 objects mentioned above, create object representation of data using parser (also mentioned above).
  5. output objects json.

Comments

Popular posts from this blog

Sass watch command compiles .scss files before full sftp upload -

filehandler - java open files not cleaned, even when the process is killed -

gridview - Yii2 DataPorivider $totalSum for a column -