BruceyBandit:
私は以下を完了少しの助けを必要としています。基本的に私は、2つのハッシュマップリスト(body1と体2)を持っていると私は1つ(身体)にマージする必要があります。私が持っている問題は、私はポスト要求として体内に渡す必要があり、それが地図にかかるので地図にこれとコンバート体を行う方法です。これは、その方法がunirest機能に組み込まれて使用しているため、マップすることがあります。
((HttpRequestWithBody) httpRequest).fields(...);
そして、フィールドが地図にする必要があります。
public class Main {
public static void main(String args[]) {
Map<String, Object> body1=Map.of("key1","value1","key2","value2","key3","value3");
Map<String, Object> body2=Map.of("key1","value1","key2","value2");
List<Map<String, Object>> body=List.of(body1,body2);
for(Map<String, Object> map:body) {
//not sure what goes here
}
}
final String url = String.format("%s/.../service/", System.getenv(ENDPOINT), service);
new DBRequest(dataStore, url, HttpMethod.POST).postRequest(body);
}
public HttpResponse postRequest(Map body) {
((HttpRequestWithBody) httpRequest).fields(body);
return sendRequest();
}
gcallea:
あなたは使用することができますマージ() java.util.Mapインターフェースに機能を。この方法は、あなたもあなたのマップ上の2つの要素が同じキーを持っている場合に適用するためのロジックを導入することができます。
ここで論理はキーの競合の場合に適用される場合、私がなさのJUnit例えばパターンでCONCATENATE要素の文字列値にある「値1、値2」の値が貴様ている場合:
@Test
public void mapMergeTest(){
Map<String, Object> body1=Map.of("key1","value1","key2","value2","key3","value3");
System.out.println("Merged body1: \n"+body1);
Map<String, Object> body2=Map.of("key1","value1","key2","value2");
System.out.println("Merged body2: \n"+body2);
Map<String, Object> mergedBody = new HashMap<>(body1);
body2.forEach(
(key, value) -> {
mergedBody.merge(key, value, (v1, v2) -> {
if(v1.equals(v2))
return v1.toString();
return v1.toString() + "-" + v2.toString();
});
});
System.out.println("Merged body: \n"+mergedBody);
}
出力は次のようになります。
Body1:
{key1=value1, key2=value2, key3=value3}
Body2:
{key1=value5, key2=value2}
Merged body:
{key1=value1-value5, key2=value2, key3=value3}
だから、あなたのニーズに応じて、マージキーの競合ロジックを変更します。