如何解决使用C#以不同语言从JSON文件获取数据
我尝试使用此代码将数据从JSON文件获取到我的应用中 (希伯来语字母显示为“?”):
private static T PopulateData<T>(string fileName)
{
var file = "TestingNav.Data." + fileName;
var assembly = Assembly.GetExecutingAssembly();
T obj;
var resourceStream = assembly.GetManifestResourceStream(file);
using (var reader = new StreamReader(resourceStream,Encoding.Default))
{
string data = reader.ReadToEnd();
byte[] byteArray = Encoding.Default.GetBytes(data);
MemoryStream stream = new MemoryStream(byteArray);
var serializer = new DataContractJsonSerializer(typeof(T));
obj = (T)serializer.ReadObject(stream);
}
return obj;
}
但是,它不能在不同的语言上运行,即希伯来语...尽管我确实尝试在其中添加不同类型的编码。
代码无法读取的JSON部分:
{
"itemName": "Hamburger","name": "Hamburger 52","description": "Hamburger 52 Y/O","itemDescription": "טעים מאוד hamburger with Angus beef grilled to perfection","itemRating": 4.5
},
更新:
private static T PopulateData<T>(string fileName)
{
var file = "TestingNav.Data." + fileName;
T obj;
var assembly = IntrospectionExtensions.GetTypeInfo(typeof(T)).Assembly;
Stream stream = assembly.GetManifestResourceStream(file);
string text = "";
using (var reader = new StreamReader(stream))
{
text = reader.ReadToEnd();
obj = JsonConvert.DeserializeObject<T>(text);
}
return obj;
}
解决方法
解决方案非常简单,谢谢您的所有大力帮助@Panagiotis Kanavos @dbc @Heretic Monkey
解决方案:
private static T PopulateData<T>(string fileName)
{
var file = "TestingNav.Data." + fileName;
T obj;
var assembly = IntrospectionExtensions.GetTypeInfo(typeof(T)).Assembly;
Stream stream = assembly.GetManifestResourceStream(file);
string text = "";
using (var reader = new StreamReader(stream,Encoding.GetEncoding(1255)))
{
text = reader.ReadToEnd();
obj = JsonConvert.DeserializeObject<T>(text);
}
return obj;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。