Я записал свой собственный сериализатор JSON с помощью DataContractJsonSerializer в System.ServiceModel.Web.dll
блок [который является компонентом WCF, включенного в.NET 3.5 как стандартный блок, и в.NET 3,5 Клиентских Профиля SP1] (в.NET 4.0 и Silverlight 4, это было перемещено в System.Runtime.Serialization.dll
).
using System.IO;
using System.Runtime.Serialization.Json;
public class JsonObjectSerializer
{
public string Serialize(T instance) where T : class
{
var serializer = new DataContractJsonSerializer(typeof(T));
using (var memoryStream = new MemoryStream())
{
serializer.WriteObject(memoryStream, instance);
memoryStream.Flush();
memoryStream.Position = 0;
using (var reader = new StreamReader(memoryStream))
{
return reader.ReadToEnd();
}
}
}
public T Deserialize(string serialized) where T : class
{
var serializer = new DataContractJsonSerializer(typeof(T));
using (var memoryStream = new MemoryStream())
{
using (var writer = new StreamWriter(memoryStream))
{
writer.Write(serialized);
writer.Flush();
memoryStream.Position = 0;
return serializer.ReadObject(memoryStream) as T;
}
}
}
}
Когда вы говорите «код страны», я предполагаю, что вы имеете в виду двухбуквенный код, как в ISO 3166 . Затем вы можете использовать конструктор RegionInfo, чтобы проверить, является ли ваша строка правильным кодом.
string countryCode = "de";
try {
RegionInfo info = new RegionInfo(countryCode);
}
catch (ArgumentException argEx)
{
// The code was not a valid country code
}
Вы также можете, как вы указываете в своем вопросе, проверить, является ли это допустимым кодом страны для немецкого языка. Затем вы просто передаете конкретное название культуры вместе с кодом страны.
string language = "de";
string countryCode = "de";
try {
RegionInfo info = new RegionInfo(string.Format("{0}-{1}", language, countryCode));
}
catch (ArgumentException argEx)
{
// The code was not a valid country code for the specified language
}
Если вам нужны только страны / регионы, вы можете использовать класс RegionInfo: http://msdn.microsoft.com/en-us/library/system.globalization.regioninfo.aspx