

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Perbedaan serialisasi antara 1.x dan 2.x dari AWS SDK untuk Java
<a name="migration-serialization-changes"></a>

## Daftar objek untuk meminta perbedaan parameter
<a name="serialization-diffs-list-obj-to-req-param"></a>

SDK for Java v1.x dan v2.x berbeda dalam cara mereka membuat serial objek List untuk meminta parameter.

SDK for Java 1.x tidak membuat serial daftar kosong, sedangkan SDK for Java 2.x membuat serial daftar kosong sebagai parameter kosong.

Misalnya, pertimbangkan layanan dengan `SampleOperation` yang membutuhkan a`SampleRequest`. `SampleRequest`Menerima dua parameter—tipe String `str1` dan tipe List `listParam` —seperti yang ditunjukkan pada contoh berikut.

**Example dari `SampleOperation` dalam 1.x**  

```
SampleRequest v1Request = new SampleRequest()
    .withStr1("TestName");

sampleServiceV1Client.sampleOperation(v1Request);
```
Pencatatan tingkat kabel menunjukkan bahwa `listParam` parameter tidak diserialisasi.  

```
Action=SampleOperation&Version=2011-01-01&str1=TestName
```

**Example dari `SampleOperation` dalam 2.x**  

```
sampleServiceV2Client.sampleOperation(b -> b
    .str1("TestName"));
```
Pencatatan tingkat kabel menunjukkan bahwa `listParam` parameter diserialisasikan tanpa nilai.  

```
Action=SampleOperation&Version=2011-01-01&str1=TestName&listParam=
```

## POJOs di V1 dibandingkan dengan pembangun di V2
<a name="serialization-json-objects"></a>

[Karena SDK for Java V1 menggunakan kelas POJO yang bisa berubah, pustaka serialisasi dan deserialisasi — seperti Jackson — dapat menggunakan objek model secara langsung.](https://github.com/FasterXML/jackson-docs) 

V2 SDK for Java, sebaliknya, menggunakan objek model yang tidak dapat diubah. Anda harus menggunakan pembangun perantara untuk melakukan de/serialisasi.

Contoh berikut menunjukkan perbedaan antara panggilan `headBucket` API de/serializing dengan V1 dan V2 menggunakan Jackson`ObjectMapper`.

```
    public void sendRequest() throws IOException {
        final String bucketName = "amzn-s3-demo-bucket";
        final ObjectMapper mapper = new ObjectMapper();

        // V1 uses POJOs to serialize and deserialize.
        final AmazonS3 v1S3Client = AmazonS3ClientBuilder.defaultClient();
        HeadBucketResult resultV1 = v1S3Client.headBucket(
            new HeadBucketRequest(bucketName));

        String v1Serialized = mapper.writeValueAsString(resultV1);

        HeadBucketResult deserializedV1 = mapper.readValue(v1Serialized, HeadBucketResult.class);
        
        // V2 uses builders to serialize and deserialize.
        S3Client v2S3Client = S3Client.create();
        HeadBucketResponse v2Response = v2S3Client.headBucket(
            b -> b.bucket(bucketName));

        String v2Serialized = mapper.writeValueAsString(
            v2Response.toBuilder());

        HeadBucketResponse v2Deserialized = mapper.readValue(
            v2Serialized, HeadBucketResponse.serializableBuilderClass())
            .build();
    }
```