4

私はI18Nプロジェクトに貢献しており、*。resxファイルをJSONオブジェクトとしてシリアル化するための呼び出しがあります(何らかの理由で)。

私が疑問に思っているのは:

  • HttpContext.GetGlobalResourceObjectを使用してトークンを取得できるように、特定の* .resxファイルのすべての有効なキーのリストを取得する方法はありますか?
  • それがうまくいかない場合、誰かがうまくいく賢い解決策を思いついたことがありますか?
4

1 に答える 1

7
  Sub ReadRessourceFile()
       ''#Requires Assembly System.Windows.Forms 
        Dim rsxr As System.Resources.ResXResourceReader = New System.Resources.ResXResourceReader("items.resx")

        ''# Iterate through the resources and display the contents to the console.    
        Dim d As System.Collections.DictionaryEntry
        For Each d In rsxr
            Console.WriteLine(d.Key.ToString() + ":" + ControlChars.Tab + d.Value.ToString())
        Next d

        ''#Close the reader. 
        rsxr.Close()
    End Sub

次に、これをシリアル化可能な辞書に追加する必要があります。これをSystem.Web.Extensions.dllを使用してJSONにシリアル化できます。

Public Class JSONHelper

Public Shared Function Serialize(Of T)(ByVal obj As T) As String
    Dim JSONserializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()  
    Return JSONserializer.Serialize(obj)
End Function

Public Shared Function Deserialize(Of T)(ByVal json As String) As T
    Dim obj As T = Activator.CreateInstance(Of T)()
    Dim JSONserializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()
    obj = JSONserializer.Deserialize(Of T)(json)
    Return obj
End Function

End Class

編集:C#:

public void ReadRessourceFile()
{
    //Requires Assembly System.Windows.Forms '
    System.Resources.ResXResourceReader rsxr = new System.Resources.ResXResourceReader("items.resx");

    // Iterate through the resources and display the contents to the console. '    
    System.Collections.DictionaryEntry d = default(System.Collections.DictionaryEntry);
    foreach (DictionaryEntry d_loopVariable in rsxr) {
        d = d_loopVariable;
        Console.WriteLine(d.Key.ToString() + ":" + ControlChars.Tab + d.Value.ToString());
    }

    //Close the reader. '
    rsxr.Close();
}

そしてJSONヘルパー:

public class JSONHelper
{

    public static string Serialize<T>(T obj)
    {
        System.Web.Script.Serialization.JavaScriptSerializer JSONserializer = new System.Web.Script.Serialization.JavaScriptSerializer();
        return JSONserializer.Serialize(obj);
    }

    public static T Deserialize<T>(string json)
    {
        T obj = Activator.CreateInstance<T>();
        System.Web.Script.Serialization.JavaScriptSerializer JSONserializer = new System.Web.Script.Serialization.JavaScriptSerializer();
        obj = JSONserializer.Deserialize<T>(json);
        return obj;
    }

}
于 2010-12-21T09:12:23.157 に答える