0

I am getting a result from the model in the list:

List<Chemtemporder> tempOrder = lcbuyerdao.getc2code(cart.toString());

In this tempOrder I am getting all the data, but I have to send this data in particular format. For that am using JSONObject and JSONArray. Process this result into like below

 {"cart":
     {"121212000002":[
       {
            "seller":"121212",
            "scheme":"",
            "schPer":0,
            "Mrp":null,
            "splRate":0,
            "itemName":"* Gemer 0.5 Tab",
            "itmvalue":0,
            "c_seller_buyer_code":null,
            "ItemName":"* Gemer 0.5 Tab",
            "stock":null,
            "maxqty":0,
            "schQty":0,
            "minqty":1,
            "mfacName":"",
            "n_rowid":0,
            "image":"",
            "schAlertFlag":0,
            "mrp":null,
            "c_pack":"1card",
            "orderedQty":2,
            "buyer":"000002",
            "ptr":null,
            "c_item_code":"40130",
            "mfacCode":"",
            "Stock":null
        }
     ]
   }
 }

This format is coming when am printing return type but in the postman response am getting an error msg.

Postman response:

 No serializer found for class org.json.JSONObject and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)

my code in Resources (Controller) :

 public JSONObject cartTest(CustdetailCart cart) {  
    String buyer;
    String seller;
    String sellebuyer ="";      
    final List<Cartdet> list = cart.getCustDetails();
    JSONObject jsBody = new JSONObject();
    for(Cartdet temp:list) {
        buyer= temp.getBuyer_code();
        seller = temp.getSeller_code();
        sellebuyer = seller+buyer;
        jsBody.put(sellebuyer, new JSONArray());
    }

    System.out.println("jsBody"+jsBody.toString());
    List<Chemtemporder> tempOrder =lcbuyerdao.getc2code(cart.toString());

    for(Chemtemporder tmp :tempOrder ) {
        ObjectMapper mapperObj = new ObjectMapper();
        mapperObj.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, true);


        buyer  = tmp.getBuyer(); 
        seller = tmp.getSeller();
        sellebuyer = seller+buyer;
        JSONArray selbuy = jsBody.getJSONArray(sellebuyer);
        System.out.println("selbuy "+selbuy.toString());
        try {

            System.out.println("mapper"+mapperObj.writeValueAsString(tmp));
            selbuy.put(new JSONObject(mapperObj.writeValueAsString(tmp)));
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }

    }
    JSONObject jsObj = new JSONObject();
    jsObj.put("cart", jsBody);
    System.out.println(jsObj);
    return jsObj;
}  

Something wrong in the code, but I didn't get that can anyone solve this problem.

  • Possible duplicate of [Serializing with Jackson (JSON) - getting "No serializer found"?](https://stackoverflow.com/questions/8367312/serializing-with-jackson-json-getting-no-serializer-found) –  Aug 03 '18 at 11:08
  • @intentionallyleftblank I tried but I didn't get the actual result and error is same. getter and setter are public only and i use myObjectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); also – jayaprakash jp Aug 03 '18 at 13:16
  • But when amusing mapperObj.setVisibility(JsonMethod.FIELD, Visibility.ANY); error occurs. – jayaprakash jp Aug 03 '18 at 13:23
  • Why are you using `JSONObject` and `JSONArray` at all. Just use `List`s and `Map`s. The Jackson ObjectMapper knows how to serialize these just fine. – Paul Samsotha Aug 05 '18 at 02:34
  • sorry for late reply. yes using ObjectMapper I solved my problem. – jayaprakash jp Aug 07 '18 at 04:44

1 Answers1

0

I Solved my problem... Maybe it is useful to other's

Controller

public ObjectNode  cartTest(CustdetailCart cart) throws JsonProcessingException {   
    String buyer;
    String seller;
    String sellebuyer = ""; 
    String sellebuyer1 = "";        
    final List<Cartdet> list = cart.getCustDetails();
    ObjectMapper mapper = new ObjectMapper();
    ObjectNode jsBody = mapper.createObjectNode(); 
    for(Cartdet temp:list) {
        buyer= temp.getBuyer_code();
        seller = temp.getSeller_code();
        sellebuyer = seller+buyer;
        sellebuyer1 += seller+buyer+",";
        jsBody.set(sellebuyer,mapper.createArrayNode());
        System.out.println(jsBody);
    }
    List<String> c_seller_buyer_code = Arrays.asList(sellebuyer1.split("\\s*,\\s*"));
    List<Chemtemporder> tempOrder =lcbuyerdao.getc2code(c_seller_buyer_code);
    for(Chemtemporder tmp :tempOrder ) {
        buyer  = tmp.getBuyer(); 
        seller = tmp.getSeller();
        sellebuyer = seller+buyer;                              
        ArrayNode orders = (ArrayNode) jsBody.get(sellebuyer);
        try {
            orders.add(mapper.readTree(mapper.writeValueAsString(tmp)));
        } catch (IOException e) {
            e.printStackTrace();
        }           
    }       
    ObjectNode node = mapper.createObjectNode(); 
    node.set("cart", jsBody);
    return node;        
}