Apex_Apex REST APIで連携されたJOSNデータを処理

Apex REST APIで連携されたJOSNデータを処理する場合、どうするかを書くよ！
簡単な例だから、実際はもっとデータに欠けがないかとか、色々チェックしたりするよ！
構造が深いネストにも対応しているよ！

Mapを使用する例を記載するね！Map使用しない場合もあるけど、連携元が項目など変更した場合に最小限になるよ！
初心者～中級者の過程でなれておこうね！
<br/>
以下コードだよ！
```SimpleJsonExample.cls
public class SimpleJsonExample {
    public static void parseJson() {
        // ネストされたリストを含むJSONデータを準備
        // 趣味の配列の中に、さらに詳細情報を持つオブジェクトの配列
        String jsonResponse = '{'
            + '"userName": "田中太郎",'
            + '"age": 25,'
            + '"isStudent": true,'
            + '"hobbies": ["読書", "旅行", "料理"],'
            + '"skillSet": ['
            + '    {'
            + '        "category": "プログラミング",'
            + '        "items": ["Java", "Python", "Apex"],'
            + '        "years": 3'
            + '    },'
            + '    {'
            + '        "category": "言語",'
            + '        "items": ["英語", "中国語"],'
            + '        "years": 5'
            + '    }'
            + ']'
            + '}';

        // JSONをMapとして解析
        Map<String, Object> dataMap = (Map<String, Object>) JSON.deserializeUntyped(jsonResponse);

        // 基本的なデータの取得
        String name = (String) dataMap.get('userName');
        Integer age = (Integer) dataMap.get('age');
        Boolean isStudent = (Boolean) dataMap.get('isStudent');

        // 基本情報の出力
        System.debug('■ 基本情報');
        System.debug('名前: ' + name);
        System.debug('年齢: ' + age);
        System.debug('学生?: ' + isStudent);

        // 単純な配列の処理
        System.debug('■ 趣味リスト');
        List<Object> hobbiesList = (List<Object>) dataMap.get('hobbies');
        for (Object hobby : hobbiesList) {
            String hobbyStr = (String) hobby;
            System.debug('- ' + hobbyStr);
        }

        // ネストされた配列（skillSet）の処理
        // skillSetは配列なので、List<Object>として取得
        System.debug('■ スキルセット');
        List<Object> skillSetList = (List<Object>) dataMap.get('skillSet');
        
        // skillSetの各要素はオブジェクトなので、Map<String, Object>にキャストして処理
        for (Object skillObj : skillSetList) {
            // 各スキルセットをMapとして扱う
            Map<String, Object> skill = (Map<String, Object>) skillObj;
            
            // カテゴリと経験年数を取得
            String category = (String) skill.get('category');
            Integer years = (Integer) skill.get('years');
            
            System.debug('カテゴリ: ' + category + ' (経験年数: ' + years + '年)');
            
            // itemsは配列なので、List<Object>として取得して処理
            List<Object> items = (List<Object>) skill.get('items');
            for (Object item : items) {
                String itemStr = (String) item;
                System.debug('  - ' + itemStr);
            }
        }
    }
}
```

<h1>Map< String, Object > dataMap = (Map< String, Object >) JSON.deserializeUntyped(jsonResponse);</h1>
<dt>Object型で受け取る
    <dd>Object型で受け取るため、後で適切な型にキャストする必要があり</dd><br/>
</dt>
<br/>
<h1>String name = (String) dataMap.get('userName');</h1>
<dt>String型キャスト
    <dd>キャストとは型変換のことで、受け取ったデータをStringに型変換します。<br/>
        Object型で受け取tているから、きちんと型定義が必要です。<br/>
        他の項目もキャストします。</dd><br/>
</dt>
<br/>
<h1>List< Object > hobbiesList = (List< Object >) dataMap.get('hobbies');</h1>
<dt>配列(オブジェクト)で受け取っているもの
    <dd>ListのsObject型などにキャストします。<br/>
    その後ループ処理して、Listを一つずつ抜き出しています。</dd><br/>
</dt>
<br/>
<h1>List< Object > skillSetList = (List< Object >) dataMap.get('skillSet');</h1>
<dt>配列(オブジェクト)で更に中に項目があるもの
    <dd>ちょっと更に複雑です。<br/>
    ListのsObject型などにキャスト後ループ処理します。<br/>
    そのときにまず、Mapに格納します。<br/>
    </dd><br/>
</dt>
<dt>String category = (String) skill.get('category');<br/>
    <dd>そのままMapでgetできるものはgetsite取得します。
    </dd><br/>
</dt>
<dt>List< Object > items = (List< Object >) skill.get('items');<br/>
    <dd>更にネストしている構造のものに関しては、またgetでListに格納します。<br/>
    String itemStr = (String) item;<br/>
    そしてキャスとして項目を受け取って処理します。そのときはもちろんループです。    
    </dd><br/>
</dt>

<h1>使ってみよう！</h1><br/>
このクラスを開発者コンソールで作成します。<br/>

その後、匿名コードにて、<br/>
```
SimpleJsonExample.parseJson();
```
を実行してね！<br/>
<br/>
面倒かもしれないけど、慣れてみようね！<br/>
何か参考になれば嬉しいな！<br/>
励みになるから、イイネ、フォローよろしくね！