0

抱歉问了另一个非常明显的问题

我有以下字符串:

{
 status=1,
 msg=1 out of 2 Transactions Fetched Successfully,
 transaction_details=
    {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}
    }
}

我想将它们分组到一个HashMap或一个ArrayList really don't know what to useif 如果给出事务 id 例如:2298597 and 6503939我应该能够获得其他值,例如status etc.

我真的不知道该怎么做,这就是为什么最终在这里寻求帮助。

请帮助我输入一些内容,或者如果可能的话提供示例代码。

谢谢

编辑

我设法将所有值放入映射并通过键获取值现在我能够获取如下值:

transaction_details is the key
and Values : {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}}

现在我必须根据交易编号对值进行分组,例如:2298597我该怎么做?

4

2 回答 2

1

至于我,您应该为您的“字符串”创建一个数据容器(某种操作响应对吗?)并将其放入Map键是您想要的值(这里是一些 id)的位置,而地图的值将只是您的数据容器对象。

编辑:

Map<String,MagicContainer> myMap=new HashMap<String,MagicContainer>();
MagicContainer message=new MagicContainer(message); // where message is lets say your example string
for(String singleId:message.getTransactionIDs()){
    myMap.put(singleId,message);
}

//now you can get your message by one of transactions id
String status=myMap.get("2298597").getStatus();

办公室。您可以在MagicContainer类中编写逻辑(消息解析和 getter + setter 到重要值)

编辑:

在您在编辑中指出的这种情况下,只需将地图的值包装到列表中,例如。HashMap<String,List<MagicContainer>>(),并在添加到地图时,检查相应键是否存在,如果存在,只需将您的消息添加到列表中。否则使用新列表创建新密钥。

于 2013-10-01T12:29:42.497 回答
1

创建一个Transactions类。拥有所有变量和相应的 getter 和 setter。覆盖你.equals().hashCode()方法。

至于选择什么HashMapList我建议选择 HashMap,因为访问存储在 HashMap 中的数据的复杂性是 O(1)。对于列表,它是 O(N)

于 2013-10-01T12:28:41.400 回答