2010-05-14 12 views
6

मैं एक आई 18 एन प्रोजेक्ट पर योगदान दे रहा हूं और हमारे * .resx फ़ाइलों को जेएसओएन ऑब्जेक्ट्स (जो भी कारण के लिए) क्रमबद्ध करने के लिए एक कॉल है।एएसपी.नेट * .resx serialization

क्या मैं सोच रहा हूँ है:

  • वहाँ एक रास्ता है, ताकि हम HttpContext.GetGlobalResourceObject इस्तेमाल कर सकते हैं टोकन हड़पने के लिए एक दिया * .resx फ़ाइल के लिए मान्य कुंजी के सभी की एक सूची प्राप्त करने के लिए है ?
  • यदि यह काम नहीं करेगा, तो क्या कोई भी एक चालाक समाधान के साथ आता है?
+0

एक कारण, यदि आप एक ऐप बना रहे हैं जो JSON डेटा और AJAX कॉल पर निर्भर करता है, तो आपको अपनी सी # व्यू फाइलों की सहायता के बिना जावास्क्रिप्ट में स्थानीय HTML स्निपेट जेनरेट करना पड़ सकता है। इस मामले में resx डेटा के साथ JSON ऑब्जेक्ट अचूक है। – sonjz

उत्तर

8
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 

तो फिर तुम एक Serializable शब्दकोश, जिसे फिर आप 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 

संपादित करें: सी #:

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; 
    } 

} 
+1

जेएफवाईआई, एसओ उपयोगकर्ताओं में से अधिकांश सी # बहुत बेहतर – abatishchev

+0

समझते हैं, तो अधिकांश SO उपयोगकर्ता कुछ सीखते हैं। –

+1

हाँ, "गुप्त" ResXResourceReader क्लास में निर्मित का उपयोग कर रहा है। समाधान के लिए – Greg

संबंधित मुद्दे