Q:

KeyNotFoundException: The given key was not present in the dictionary (C# Unity ANDROID APP)

I know my title has so many duplicates but i can't seem to find any the same problem as mine . Let me paste my code.
LocalizationManager.cs
rh.eLanguage language = tzGlobal.Instance.OPTION.language;

    string json = StreetUtility.LoadJsonFromStreamingAssets("notice.json");
    if (json != null)
    {
        // Separate only the necessary parts.
        LitJson.JsonData data = LitJson.JsonMapper.ToObject(json);
        json = data[language.ToString()].ToJson();

        notice = LitJson.JsonMapper.ToObject<string[]>(json);
    }

    string path = string.Format("{0}/{1}/language", rh.Const.LOCALIZATION_PATH, language);
    json = StreetUtility.LoadJsonFromResources(path);
    if (json != null)
    {
        // json load.
        Dictionary<string, string> dic = LitJson.JsonMapper.ToObject<Dictionary<string, string>>(json);

        // dictionary copy.
        dic_localization_text = new Dictionary<eTextKey, string>();
        eTextKey e;
        for (int i = 0; i < dic.Count; i++)
        {
            e = (eTextKey)i;
            dic_localization_text[e] = dic[e.ToString()];
        }

        // Run registered localize function.
        for (int i = 0; i < list_localize_method.Count; i++)
        {
            complete = false;
            list_localize_method[i].Invoke();
            yield return new WaitUntil(() => complete);
        }
    }

    Debug.LogWarning("TODO: Loading popup off.");

NOTE: I have 2 Version (PC Version) and (MOBILE Version) the PC Version is working very fine now my problem is the Mobile Version
NOTE: this is an android application(apk)
What I am doing here on LocalizationManager is that I'm loading the json file from my streaming asset which is the (notice.json) but the problem is that on my logcat it has this error 

:KeyNotFoundException: The given key was not present in the dictionary.at System.Collections.Generic.Dictionary`2[System.String,LitJson.JsonData].get_Item (System.String key) [0x00000] in :0 
                                            at LitJson.JsonData.get_Item (System.String prop_name) [0x00000] in :0 
                                            at LocalizationManager+c__Iterator0.MoveNext () [0x00000] in :0 
                                            at UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) [0x00000] in :0 

Maybe you will asked what i am doing . I am doing a Choose Language Scenario. 
As you can see on the image if i choose Korea it must change to Korea and so on.
And for further information here is my StreetUtility.LoadJsonFromStreamingAsset function
public static string LoadJsonFromStreamingAssets(string path_with_extention_under_streaming_assets_folder)
{
    string json = null;
    try
    {
        //Android Platform
  #if UNITY_ANDROID

        string full_path = Application.persistentDataPath + path_with_extention_under_streaming_assets_folder;
        WWW reader = new WWW(full_path);
        while (!reader.isDone) { }
        json = reader.text;

        Debug.Log("Loaded Files: " + json);

  #elif UNITY_IOS //IOS Platform

  #elif UNITY_STANDALONE //PC Platform
        string full_path = string.Format("{0}/{1}", Application.streamingAssetsPath, path_with_extention_under_streaming_assets_folder);
        StreamReader reader = new StreamReader(full_path);
        json = reader.ReadToEnd().Trim();
        reader.Close();

        Debug.Log(json);
  #endif
    }
    catch (Exception e)
    {
        Debug.LogWarningFormat("Failed to Load.\n{0}\n{1}", e, path_with_extention_under_streaming_assets_folder);
    }
    return json;
}

This line of code has something to do with the error also. I'm pretty sure of that
#if UNITY_ANDROID

        string full_path = Application.persistentDataPath + path_with_extention_under_streaming_assets_folder;
        WWW reader = new WWW(full_path);
        while (!reader.isDone) { }
        json = reader.text;

        Debug.Log("Loaded Files: " + json);

Thank you very much in advance and I will apologize if you don't understand my english. Please just ask. Thank you again.

A:

I'll share to you what is really the error here . There's nothing wrong on my 
The line of code below is working perfectly . So let me just explain a bit of it by putting comment lines
LocalizationManager.cs
//Convert the json string into a LitJson JSON Object
LitJson.JsonData data = LitJson.JsonMapper.ToObject(json);
//Take the json sub-object mapped to whatever language is represented by this variable
json = data[language.ToString()].ToJson();
//and convert this sub-object to an array of strings
notice = LitJson.JsonMapper.ToObject<string[]>(json);

So now my problem was on my StreetUtility.cs wherein i change this line of code:
string full_path = Application.persistentDataPath + path_with_extention_under_streaming_assets_folder;
WWW reader = new WWW(full_path);
while (!reader.isDone) { }
json = reader.text;
Debug.Log("Loaded Files: " + json);

to this line of code
string full_path = Path.Combine(Application.streamingAssetsPath, path_with_extention_under_streaming_assets_folder);

if (full_path.Contains("://") || full_path.Contains(":///"))
{
     WWW www = new WWW(full_path);
     while (!www.isDone) { }
     json = www.text.Trim();
}
else
{
     json = File.ReadAllText(full_path);
}
     Debug.Log("Loaded file: " + json);

So i need to put a Trim() on json = www.text.Trim() because if i don't put a Trim() it will cause an Exception saying 

JsonException: Invalid character '' in input string

