2013-10-03 2 views
0

을 나는이 값이 포함 된 문자열이 있습니다문자열에서 값을 가져와 속성을 POJO에 값을 복사 : 자바

String verifyPaymentDetails = "{ 
2298597={mihpayid=403993715508098532, request_id=NULL, bank_ref_num=NULL, amt=53.77, disc=0.00, mode=CC, PG_TYPE=AXIS, card_no=512345XXXXXX2346, name_on_card=emu, udf2=0, addedon=2013-06-03 17:34:42, status=failure, unmappedstatus=failed, Merchant_UTR=NULL, Settled_At=NULL}, 
6503939={mihpayid=Not Found, status=Not Found} 
}" 

을 나는 위의 문자열에서 값을 추출하고 다음과 같이 그들을 저장할 :

키는 키 mihpayid=403993715508098532, request_id=NULL, bank_ref_num=NULL, amt=53.77, disc=0.00, mode=CC, PG_TYPE=AXIS, card_no=512345XXXXXX2346, name_on_card=emu, udf2=0, addedon=2013-06-03 17:34:42, status=failure, unmappedstatus=failed, Merchant_UTR=NULL, Settled_At=NULL

Map<String,Item> tag = new HashMap<String,VerifyPaymentRO>(); 

에 대한 2298597와 값을 것이 내 VerifyPaymentRO

무엇이다
public class VerifyPaymentRO { 
private String mihpayid; 
private String request_id; 
private String bank_ref_num; 
private String amt; 
private String disc; 
private String mode; 
private String PG_TYPE; 
private String card_no; 
private String name_on_card; 
private String udf2; 
private String addedon; 
private String status; 
private String unmappedstatus; 
private String Merchant_UTR; 
private String Settled_At; 

public String getMihpayid() { 
    return mihpayid; 
} 
public void setMihpayid(String mihpayid) { 
    this.mihpayid = mihpayid; 
} 
public String getRequest_id() { 
    return request_id; 
} 
public void setRequest_id(String request_id) { 
    this.request_id = request_id; 
} 
public String getBank_ref_num() { 
    return bank_ref_num; 
} 
public void setBank_ref_num(String bank_ref_num) { 
    this.bank_ref_num = bank_ref_num; 
} 
public String getAmt() { 
    return amt; 
} 
public void setAmt(String amt) { 
    this.amt = amt; 
} 
public String getDisc() { 
    return disc; 
} 
public void setDisc(String disc) { 
    this.disc = disc; 
} 
public String getMode() { 
    return mode; 
} 
public void setMode(String mode) { 
    this.mode = mode; 
} 
public String getPG_TYPE() { 
    return PG_TYPE; 
} 
public void setPG_TYPE(String pG_TYPE) { 
    PG_TYPE = pG_TYPE; 
} 
public String getCard_no() { 
    return card_no; 
} 
public void setCard_no(String card_no) { 
    this.card_no = card_no; 
} 
public String getName_on_card() { 
    return name_on_card; 
} 
public void setName_on_card(String name_on_card) { 
    this.name_on_card = name_on_card; 
} 
public String getUdf2() { 
    return udf2; 
} 
public void setUdf2(String udf2) { 
    this.udf2 = udf2; 
} 
public String getAddedon() { 
    return addedon; 
} 
public void setAddedon(String addedon) { 
    this.addedon = addedon; 
} 
public String getStatus() { 
    return status; 
} 
public void setStatus(String status) { 
    this.status = status; 
} 
public String getUnmappedstatus() { 
    return unmappedstatus; 
} 
public void setUnmappedstatus(String unmappedstatus) { 
    this.unmappedstatus = unmappedstatus; 
} 
public String getMerchant_UTR() { 
    return Merchant_UTR; 
} 
public void setMerchant_UTR(String merchant_UTR) { 
    Merchant_UTR = merchant_UTR; 
} 
public String getSettled_At() { 
    return Settled_At; 
} 
public void setSettled_At(String settled_At) { 
    Settled_At = settled_At; 
} 

} 

그래서 id를 문자열과 값에서 가져 와서 POJO에 값을 복사하고 ID와 객체를 HashMap에 저장합니까? 방법은

+0

문자열을 개체로 역 직렬화하려고합니다. JSON 또는 XML과 같은 일반적인 직렬화를 사용하여 이러한 작업을 수행하고 프로세스를 자동화하는 것이 더 나을 것입니다. 어쨌든, 당신의 요청은 정규 표현식 또는 심지어 StringTokenizer를 사용하여 수행 될 수 있지만, 꽤 길다 ... 그것은 스프링과 전혀 관련이 없다. – logoff

+0

@logoff 당신이 나에게 약간의 샘플을 줄 것이냐 –

+0

그것이 json 이었다면 그것은 너무 단순했을 것이다! 각 값을 추출하고 수동으로 설정하는 것이 유일한 방법입니다. – SudoRahul

답변

0

그것이 JSON 아니고 당신이 정말로 노력을 할 필요가 가정 또한 좋은 봄이 거기 경우

, 나는 최선의 해결책은 공유지에서 RojoBeanMap의 조합을 사용하는 것입니다 생각 -beanutils. 나는 또한 로조 (Rojo)의 저자이기도하므로이 문맥에서 어떻게 사용될 수 있는지 보여주고 싶다. 내부적으로 쌍의 수를 동적으로 변경하기 때문에 그룹별로 직접 정규 표현을 사용하지 않는 것이 좋습니다. 그래서 BeanMap이 우리에게 많은 일을 할 수 있다고 생각합니다.

public class VerifyPaymentExample { 

    public static void main(String[] args) { 
     String verifyPaymentDetails = "{" + 
       "2298597={mihpayid=403993715508098532, request_id=NULL, bank_ref_num=NULL, amt=53.77, disc=0.00, mode=CC, PG_TYPE=AXIS, card_no=512345XXXXXX2346, name_on_card=emu, udf2=0, addedon=2013-06-03 17:34:42, status=failure, unmappedstatus=failed, Merchant_UTR=NULL, Settled_At=NULL}," + 
       "6503939={mihpayid=Not Found, status=Not Found}" + 
       "}"; 

     Map<String, VerifyPaymentRO> result = Rojo.asMap("(\\d+)=\\{(.+?)\\}", verifyPaymentDetails) 
       .entrySet() 
       .stream() 
       .map(e -> toBean(e)) 
       .collect(Collectors.toMap(VerifyPaymentRO::getId, Function.identity())); 

    } 

    public static VerifyPaymentRO toBean(Map.Entry<String,String> entry) { 
     VerifyPaymentRO bean = new VerifyPaymentRO(); 
     bean.setId(entry.getKey()); 

     BeanMap beanMap = new BeanMap(bean); 
     Rojo.asMap("(\\w.+?)=([^,]+)", entry.getValue()) 
      .forEach((key, value) -> { 
       //Some additional mapping is required due to non-standard naming 
       if ("Settled_At".equals(key)) { 
        beanMap.put("settled_At", value); 
       } else if ("Merchant_UTR".equals(key)) { 
        beanMap.put("merchant_UTR", value); 
       } else { 
        beanMap.put(key, value); 
       } 
     }); 

     return bean; 
    } 
} 

을 당신이 코드를 실행하면 다음과 같이 동작하는 예제가 될 수 이제

public class VerifyPaymentRO { 
    private String id; 

    private String mihpayid; 
    private String request_id; 
    private String bank_ref_num; 
    private String amt; 
    private String disc; 
    private String mode; 
    private String PG_TYPE; 
    private String card_no; 
    private String name_on_card; 
    private String udf2; 
    private String addedon; 
    private String status; 
    private String unmappedstatus; 
    private String Merchant_UTR; 
    private String Settled_At; 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getMihpayid() { 
     return mihpayid; 
    } 

    public void setMihpayid(String mihpayid) { 
     this.mihpayid = mihpayid; 
    } 

    public String getRequest_id() { 
     return request_id; 
    } 

    public void setRequest_id(String request_id) { 
     this.request_id = request_id; 
    } 

    public String getBank_ref_num() { 
     return bank_ref_num; 
    } 

    public void setBank_ref_num(String bank_ref_num) { 
     this.bank_ref_num = bank_ref_num; 
    } 

    public String getAmt() { 
     return amt; 
    } 

    public void setAmt(String amt) { 
     this.amt = amt; 
    } 

    public String getDisc() { 
     return disc; 
    } 

    public void setDisc(String disc) { 
     this.disc = disc; 
    } 

    public String getMode() { 
     return mode; 
    } 

    public void setMode(String mode) { 
     this.mode = mode; 
    } 

    public String getPG_TYPE() { 
     return PG_TYPE; 
    } 

    public void setPG_TYPE(String PG_TYPE) { 
     this.PG_TYPE = PG_TYPE; 
    } 

    public String getCard_no() { 
     return card_no; 
    } 

    public void setCard_no(String card_no) { 
     this.card_no = card_no; 
    } 

    public String getName_on_card() { 
     return name_on_card; 
    } 

    public void setName_on_card(String name_on_card) { 
     this.name_on_card = name_on_card; 
    } 

    public String getUdf2() { 
     return udf2; 
    } 

    public void setUdf2(String udf2) { 
     this.udf2 = udf2; 
    } 

    public String getAddedon() { 
     return addedon; 
    } 

    public void setAddedon(String addedon) { 
     this.addedon = addedon; 
    } 

    public String getStatus() { 
     return status; 
    } 

    public void setStatus(String status) { 
     this.status = status; 
    } 

    public String getUnmappedstatus() { 
     return unmappedstatus; 
    } 

    public void setUnmappedstatus(String unmappedstatus) { 
     this.unmappedstatus = unmappedstatus; 
    } 

    public String getMerchant_UTR() { 
     return Merchant_UTR; 
    } 

    public void setMerchant_UTR(String merchant_UTR) { 
     Merchant_UTR = merchant_UTR; 
    } 

    public String getSettled_At() { 
     return Settled_At; 
    } 

    public void setSettled_At(String settled_At) { 
     Settled_At = settled_At; 
    } 
} 

:

우선의 기본 키가 될 것 ID, 당신의 빈을 업데이트 할 수 있도록 결과가 인 경우 원하는 내용을 정확하게 입력해야합니다.

관련 문제