我有以下代码:
var user = (Dictionary<string, object>)serializer.DeserializeObject(responsecontent);
Run Code Online (Sandbox Code Playgroud)
输入responsecontent是JSON,但未正确解析为对象.我应该如何正确地反序列化它?
我知道有一些关于Newtonsoft的帖子,所以希望这不是一个重复......我正在尝试将Kazaa的API返回的JSON数据转换成某种形状的好对象
WebClient client = new WebClient();
Stream stream = client.OpenRead("http://api.kazaa.com/api/v1/search.json?q=muse&type=Album");
StreamReader reader = new StreamReader(stream);
List<string> list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(reader.Read().ToString());
foreach (string item in list)
{
Console.WriteLine(item);
}
//Console.WriteLine(reader.ReadLine());
stream.Close();
Run Code Online (Sandbox Code Playgroud)
那个JsonConvert系列只是我最近尝试过的一个......我不太了解它并且希望通过问你们来消除一些步法.我原本试图将它转换为字典或其他东西......实际上,我只需要在那里获取一些值,因此根据文档来判断,也许Newtonsoft的LINQ to JSON可能是更好的选择?思考/链接?
以下是JSON返回数据的示例:
{
"page": 1,
"total_pages": 8,
"total_entries": 74,
"q": "muse",
"albums": [
{
"name": "Muse",
"permalink": "Muse",
"cover_image_url": "http://image.kazaa.com/images/69/01672812 1569/Yaron_Herman_Trio/Muse/Yaron_Herman_Trio-Muse_1.jpg",
"id": 93098,
"artist_name": "Yaron Herman Trio"
},
{
"name": "Muse",
"permalink": "Muse",
"cover_image_url": "htt p://image.kazaa.com/images/54/888880301154/Candy_Lo/Muse/Candy_Lo-Muse_1.jpg",
"i d": 102702,
"artist_name": "\u76e7\u5de7\u97f3"
},
{
"name": "Absolution",
"permalink": " Absolution",
"cover_image_url": …Run Code Online (Sandbox Code Playgroud) 我试图扩展这里给出的JSON.net示例 http://james.newtonking.com/projects/json/help/CustomCreationConverter.html
我有另一个派生自基类/接口的子类
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Employee : Person
{
public string Department { get; set; }
public string JobTitle { get; set; }
}
public class Artist : Person
{
public string Skill { get; set; }
}
List<Person> people = new List<Person>
{
new Employee(),
new Employee(),
new Artist(),
};
Run Code Online (Sandbox Code Playgroud)
如何将Json反序列化回List <Person>
[
{
"Department": "Department1",
"JobTitle": "JobTitle1",
"FirstName": "FirstName1", …Run Code Online (Sandbox Code Playgroud) 我有以下从外部方收到的JSON字符串.
{
"team":[
{
"v1":"",
"attributes":{
"eighty_min_score":"",
"home_or_away":"home",
"score":"22",
"team_id":"500"
}
},
{
"v1":"",
"attributes":{
"eighty_min_score":"",
"home_or_away":"away",
"score":"30",
"team_id":"600"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
我的映射类:
public class Attributes
{
public string eighty_min_score { get; set; }
public string home_or_away { get; set; }
public string score { get; set; }
public string team_id { get; set; }
}
public class Team
{
public string v1 { get; set; }
public Attributes attributes { get; set; }
}
public class RootObject
{ …Run Code Online (Sandbox Code Playgroud) 我在使用AJAX访问的Java服务器应用程序中有一个字符串.它看起来像下面这样:
var json = [{
"adjacencies": [
{
"nodeTo": "graphnode2",
"nodeFrom": "graphnode1",
"data": {
"$color": "#557EAA"
}
}
],
"data": {
"$color": "#EBB056",
"$type": "triangle",
"$dim": 9
},
"id": "graphnode1",
"name": "graphnode1"
},{
"adjacencies": [],
"data": {
"$color": "#EBB056",
"$type": "triangle",
"$dim": 9
},
"id": "graphnode2",
"name": "graphnode2"
}];
Run Code Online (Sandbox Code Playgroud)
当字符串从服务器中拉出时,是否有一种简单的方法可以将其转换为活动的JavaScript对象(或数组)?或者我是否必须手动拆分字符串并手动构建我的对象?
我想将对象序列化为字符串,然后返回.
我们使用protobuf-net将对象转换为Stream并成功返回.
但是,Stream to string and back ...不太成功.经过StreamToString并且StringToStream,新Stream的没有被protobuf-net反序列化; 它提出了一个Arithmetic Operation resulted in an Overflow例外.如果我们反序列化原始流,它可以工作.
我们的方法:
public static string StreamToString(Stream stream)
{
stream.Position = 0;
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
public static Stream StringToStream(string src)
{
byte[] byteArray = Encoding.UTF8.GetBytes(src);
return new MemoryStream(byteArray);
}
Run Code Online (Sandbox Code Playgroud)
我们的示例代码使用这两个:
MemoryStream stream = new MemoryStream();
Serializer.Serialize<SuperExample>(stream, test);
stream.Position = 0;
string strout = StreamToString(stream);
MemoryStream result = (MemoryStream)StringToStream(strout);
var other = …Run Code Online (Sandbox Code Playgroud) 我对使用C#和JSON数据相对较新,我正在寻求指导.我正在使用C#3.0,.NET3.5SP1和JSON.NET 3.5r6.
我有一个定义的C#类,我需要从JSON结构填充.但是,并非从Web服务检索的条目的每个JSON结构都包含在C#类中定义的所有可能的属性.
我一直在做看似错误的,艰难的方法,只是从JObject中逐个挑选每个值,并将字符串转换为所需的类属性.
JsonSerializer serializer = new JsonSerializer();
var o = (JObject)serializer.Deserialize(myjsondata);
MyAccount.EmployeeID = (string)o["employeeid"][0];
Run Code Online (Sandbox Code Playgroud)
将JSON结构反序列化为C#类并处理来自JSON源的可能缺失数据的最佳方法是什么?
我的课程定义为:
public class MyAccount
{
[JsonProperty(PropertyName = "username")]
public string UserID { get; set; }
[JsonProperty(PropertyName = "givenname")]
public string GivenName { get; set; }
[JsonProperty(PropertyName = "sn")]
public string Surname { get; set; }
[JsonProperty(PropertyName = "passwordexpired")]
public DateTime PasswordExpire { get; set; }
[JsonProperty(PropertyName = "primaryaffiliation")]
public string PrimaryAffiliation { get; set; }
[JsonProperty(PropertyName = "affiliation")]
public string[] Affiliation { get; …Run Code Online (Sandbox Code Playgroud) 最近我发现了MessagePack,这是Google的Protocol Buffers和JSON的替代二进制序列化格式,它也优于两者.
还有MongoDB用于存储数据的BSON序列化格式.
有人可以详细说明BSON与MessagePack的差异和优势吗?
只是为了完成高效的 二进制序列化格式列表:还有Gobs将成为Google协议缓冲区的继承者.然而,与所有其他提到的格式相比,这些格式不是语言无关的,并且依赖于Go的内置反射,至少还有除Go之外的其他语言的Gobs库.
我是JSON的新手.现在,我需要为我的Flash ActionScript 3.0使用JSON.所以我找到了一个用于JSON的库,我看到了术语"反序列化"和"序列化".他们的意思是什么?
serialization json deserialization json-deserialization json-serialization
我在使用Gson反序列化json字符串时遇到问题.我收到一系列命令.该命令可以是start,stop,其他一些命令.当然我有多态,并且start/stop命令继承自命令.
如何使用gson将其序列化回正确的命令对象?
似乎我只得到基类型,即声明的类型,而不是运行时类型.
deserialization ×10
json ×8
c# ×5
json.net ×5
.net ×1
bson ×1
c#-4.0 ×1
gson ×1
java ×1
javascript ×1
linq ×1
messagepack ×1
msgpack ×1
polymorphism ×1
protobuf-net ×1