code: public void extractJson(Exchange exchange)
      {
          InputStreamCache iscache = exchange.getIn().getBody(InputStreamCache.class);
  
          String postStr = null;
  
          try
          {
              postStr = IOUtils.toString(iscache);
              postStr = URLDecoder.decode(postStr, "utf-8");
          }
          catch (IOException ioex)
          {
              logger.warn("Failed to extract string from Request. Dispose request.", ioex);
              return;
          }
  
          int firstSeparatorIndex = postStr.indexOf(KEYVALUE_SEPARATOR);
          if (firstSeparatorIndex == -1)
          {
              String logFormat = "Received request is invalid. Dispose request. : Request={0}";
              String logMessage = MessageFormat.format(logFormat, postStr);
              logger.warn(logMessage);
              return;
          }
  
          String jsonStr = postStr.substring(firstSeparatorIndex + 1);
  
          if (this.isDoValidate == false)
          {
              exchange.getOut().setBody(jsonStr);
              return;
          }
  
          JSONObject jsonObj = null;
  
          try
          {
              jsonObj = JSONObject.fromObject(jsonStr);
          }
          catch (JSONException jsonex)
          {
              logger.warn("Received request is invalid. Dispose request.", jsonex);
              return;
          }
  
          exchange.getOut().setBody(jsonObj.toString());
      }
docs: ExchangeからValueを抽出する。<br>
  Valueを抽出できないオブジェクトの場合はログを出力して破棄する。<br>
  isDoValidate==trueの場合、JSONオブジェクトに一度変換したうえで文字列出力し、もちいる。
  
  @param exchange 抽出元のExchange