【问题标题】:Parse stdClass object in C#在 C# 中解析 stdClass 对象
【发布时间】:2017-06-21 02:06:18
【问题描述】:

我目前正在开发一个客户端,该客户端的功能比游戏的另一个现有客户端要多。我想添加的功能之一是用户能够将 IP 地址添加到他们的收藏夹并显示该服务器的相关信息(IP、端口、主机名、游戏模式等)。

为了做到这一点,我使用了一个带有多个参数的 API,例如 IP 地址和端口。它返回某种包含我需要的信息的字符串。但是,我无法从字符串中提取我想要的信息。我确实设法做到了,但我通过使用十几个子字符串从响应中删除参数的值来快速而肮脏地做到这一点。

这是一个 API 调用示例:http://monitor.sacnr.com/api/?IP=149.202.89.123&Port=7777&Action=info

最初我认为响应是某种 JSON 字符串,但经过一番谷歌搜索后,我在 Stackoverflow 上找到了一个关于 stdClass 的question。显然它是某种通用的 PHP 类。

所以我的问题是:如何将 API 的响应转换为 JSON 或 XML,以便我可以轻松解析它?

示例响应:

O:8:"stdClass":18:{s:8:"ServerID";s:7:"1780392";s:2:"IP";s:14:"149.202.89.123";s:4:"Port";s:4:"7777";s:8:"Hostname";s:32:"Next Generation Roleplay (0.3.7)";s:8:"Gamemode";s:14:"NG:RP v3.0.409";s:8:"Language";s:7:"English";s:3:"Map";s:13:"NG-Gaming.net";s:10:"MaxPlayers";s:3:"500";s:7:"Players";s:3:"131";s:7:"Version";s:8:"0.3.7-R2";s:8:"Password";s:1:"0";s:4:"Time";s:5:"20:00";s:6:"WebURL";s:13:"ng-gaming.net";s:4:"Rank";s:3:"112";s:10:"AvgPlayers";s:5:"88.27";s:9:"HostedTab";s:1:"1";s:10:"LastUpdate";s:10:"1486138780";s:12:"TotalServers";s:4:"1305";}

【问题讨论】:

  • 不是 JSON 字符串。
  • 如果您编写一个像this one 这样的小型 PHP 脚本并让 C# 获取 JSON 字符串可能会更好。可能比编写 C# php 对象反序列化器更容易。
  • 这种格式在 PHP 版本之间会发生变化......唯一理智的事情是 API 开发人员远离它。

标签: c# php json stdclass


【解决方案1】:

尝试使用Sharp Serialization Library

根据他们的描述:“Sharp Serialization Library 序列化和反序列化原语、ArrayLists 和 Hashtables,与 PHP serialize() 兼容”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 2020-07-12
    • 2011-08-10
    相关资源
    最近更新 更多