- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我使用的 Api 并非每次都根据要求的位置返回相同的响应。有些地方有更多的细节,有些内容比其他地方有更多的属性。生成的序列化对象每次都不相同,导致在不匹配时出现反序列化错误。该项目的对象不是匹配整个内容响应,而是仅匹配此内容的一部分:质心。
{
"place":{
"woeid":12345,
"placeTypeName":"State",
"placeTypeName attrs":{
"code":8
},
"name":"My Region",
"country":"",
"country attrs":{
"type":"Country",
"code":"XX"
},
"admin1":"My Region",
"admin1 attrs":{
"type":"Region",
"code":""
},
"admin2":"",
"admin3":"",
"locality1":"",
"locality2":"",
"postal":"",
"centroid":{
"latitude":30.12345,
"longitude":40.761292
},
"boundingBox":{
"southWest":{
"latitude":32.2799,
"longitude":50.715958
},
"northEast":{
"latitude":29.024891,
"longitude":12.1234
}
},
"areaRank":10,
"popRank":0,
"uri":"http:\/\/where.yahooapis.com",
"lang":"en-US"
}
}
有人能指出最好的方法来反序列化一段内容而不是完整的响应(质心不在同一个地方),或者反序列化不断变化的响应模式。
我使用 ServiceStack C# 序列化器,但欢迎所有建议。谢谢。
最佳答案
实际上有几种方法可以使用 ServiceStack 的 JsonSerializer 来解析它,如 example of parsing one of GitHub's JSON API 中所示。 .
我会采用 JsonObject 方法,因为您最终会得到您选择的 C# 类,尽管它确实需要比您习惯使用 ServiceStack 的 JsonSerializer 的 1-liner。无论如何,这是结果代码:
Func<JsonObject, Centroid> toCentroid = map =>
new Centroid(map.Get<decimal>("latitude"), map.Get<decimal>("longitude"));
var place = JsonObject.Parse(JsonCentroid)
.Object("place")
.ConvertTo(x => new Place
{
WoeId = x.Get<int>("woeid"),
PlaceTypeName = x.Get(""),
PlaceTypeNameAttrs = x.Object("placeTypeName attrs"),
Name = x.Get("Name"),
Country = x.Get("Country"),
CountryAttrs = x.Object("country attrs"),
Admin1 = x.Get("admin1"),
Admin1Attrs = x.Object("admin1 attrs"),
Admin2 = x.Get("admin2"),
Admin3 = x.Get("admin3"),
Locality1 = x.Get("locality1"),
Locality2 = x.Get("locality2"),
Postal = x.Get("postal"),
Centroid = x.Object("centroid")
.ConvertTo(toCentroid),
BoundingBox = x.Object("boundingBox")
.ConvertTo(y => new BoundingBox
{
SouthWest = y.Object("southWest").ConvertTo(toCentroid),
NorthEast = y.Object("northEast").ConvertTo(toCentroid)
}),
AreaRank = x.Get<int>("areaRank"),
PopRank = x.Get<int>("popRank"),
Uri = x.Get("uri"),
Lang = x.Get("lang"),
});
关于c# - JSON C# : deserializing a changing content or a piece of json response,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5057684/
比如我有一个代码 for (int i = 0; i objects(1000);在循环之前,然后修改 objects[i]在循环内,甚至循环... for (Object& object : ob
在客户端/服务器应用程序中,从服务器请求数据并使用请求 ID 映射传入回复: --> Request data for item i using request_id 1 --> Request da
我就是这样使用Intode()的。并得到一个奇怪的错误
我在 Pandas DataFrame 中有一个列列表,我希望在没有手动输入的情况下创建某些列的列表。 我的问题是我正在学习,但知识还不够。 我曾尝试在互联网上搜索,但没有找到适合我的情况。如果有重复
我几乎完全完成了我的 torrent 服务器。我现在要做的就是找出 .torrent 文件如何填充 info 键的“pieces”键。 我目前在我的 torrent 文件中有此信息,以 utf-8 格
我正在尝试使用 Time::Piece 将日期从 yymmdd 转换为 YYYY-MM-DD模块。输入为 Nov 31, 2000 (20001131),我得到的输出为 2000-12-01。实际上,
如何获取数据表中“pieces”列的总和?假设我有下表。如何计算 article="milk"和 artno="15"的“总”件数? Columns: article artno p
我试验了 Time::Piece 和 Time::Seconds 包并编写了以下脚本来比较两个 Time::Piece 对象。我要做的是确定当前时间是在一天中的特定时间之前还是之后。在这种情况下,我将
是否有代表拼图的 Unicode 符号? Unicode 中有很多很少使用的 dingbats,我有点不记得了 - 但怀疑也有一个。但是,我在 gucharmap 中找不到类似的东西,因为它可能不完整
我正在阅读this book我自己,只是为了好玩,并遇到了以下问题: This code has a security vulnerability ; Can you find and fix it?
我想做一个小书签,从某个网站获取一些信息。 在使用 $('#div').text(); 并避开 div 内的 html 元素后,我得到以下字符串: TOP-GOST
我在我的程序中忘记了一小段代码,是的,它真的很愚蠢:这是一个代码片段。 checkInputNum(){ if [[ $1 = *[^0-9]* ]]; then echo "
在 Roy Eshorove 的“The Art Of Unit Testing”一书中,单元测试定义为: automated piece of code invokes the method or
我经常遇到这种情况。 class A{ public static boolean flag = true; public void method(){ // calls method
所以我正在制作俄罗斯方 block 游戏,我遇到的问题之一是棋子旋转。我知道我可以硬编码,但这不是正确的方法。系统的工作方式是我有一个对象“Tile”的二维数组,“Tile”对象具有 x、y 坐标、
这个问题已经有答案了: How do JavaScript closures work? (86 个回答) 已关闭 9 年前。 我正在为这个概念而挣扎。通过查看下面的内容,当我在控制台上键入“计数器”
我正在使用 fs.unlink 删除一些文件,然后我想运行一些代码。由于 JS 的异步性质,发生的情况是取消链接后的代码在取消链接的回调之前被调用。我怎样才能同步这个? promise 是唯一的方法吗
vector > > myArray(5, vector >(4)); vector testArray(); myArray[0][0].push_back(testArray); 我不明白。我只是
我需要在 Perl 中安装 Time::Piece 模块。由于某种原因它不在那里。当我使用 cpan install Time::Piece 在一些成功的步骤之后,我得到了下面的错误 ..... Ch
我尝试创建一个新的 pieces 页面,有点像撇号 cms 中的博客风格。我有 trainings、trainings-widgets 和 trainings-pages 文件夹。我在app.js中注
我是一名优秀的程序员,十分优秀!