我有这个回调
{
"status": "200",
"name": "Something Here",
"serverversion": "v1.2.4.1",
"tshockversion": {
"Major": 4,
"Minor": 2,
"Build": 4,
"Revision": 128,
"MajorRevision": 0,
"MinorRevision": 128
},
"port": 7777,
"playercount": 27,
"maxplayers": 60,
"world": "Something Here",
"uptime": "0.05:14:08",
"serverpassword": false
}
Windows Form Application,所以我需要在label1上写这样的:27来自60。 请帮帮我。
答案 0 :(得分:1)
所以你想要解析一个json响应并显示文本playercount +"来自" +标签上的maxplayers。是吗?
首先你需要一个强类型的类。使用json2sharp之类的工具来定义类并将其保存到项目中。
public class Tshockversion
{
public int Major { get; set; }
public int Minor { get; set; }
public int Build { get; set; }
public int Revision { get; set; }
public int MajorRevision { get; set; }
public int MinorRevision { get; set; }
}
public class JsonResponse
{
public string status { get; set; }
public string name { get; set; }
public string serverversion { get; set; }
public Tshockversion tshockversion { get; set; }
public int port { get; set; }
public int playercount { get; set; }
public int maxplayers { get; set; }
public string world { get; set; }
public string uptime { get; set; }
public bool serverpassword { get; set; }
}
然后,您可以转换json字符串并更新标签
JsonResponse data = JsonConvert.DeserializeObject<JsonResponse>(json);
label1.Content = data.playercount + " from " + data.maxplayers
答案 1 :(得分:0)
为什么不按照手册进行操作?
http://www.newtonsoft.com/json/help/html/SerializingJSON.htm
您可以创建一个类,对其进行反序列化,然后您可以从您所获得的响应中访问反序列化对象的属性。
答案 2 :(得分:0)
假设json_response
是string
,其中包含text from OP ...
string json_response = {
"status": "200",
"name": "Something Here",
"serverversion": "v1.2.4.1",
"tshockversion": {
"Major": 4,
"Minor": 2,
"Build": 4,
"Revision": 128,
"MajorRevision": 0,
"MinorRevision": 128
},
"port": 7777,
"playercount": 27,
"maxplayers": 60,
"world": "Something Here",
"uptime": "0.05:14:08",
"serverpassword": false
}
...然后使用Newtonsoft.Json.Linq
JToken.Parse() Method
来解析JObject
或JArray
个对象......
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
......你可以试试这个......
JObject data = (JObject)JToken.Parse(json_response);
label1.Content = data["playercount"].ToString() + " from " +
data["maxplayers"].ToString();
答案 3 :(得分:-3)
你试过了吗?
....
"uptime": "0.05:14:08",
"serverpassword": false,
"label1" : function(){return playercount + ' from ' + maxplayers;}
}
这就是你想要的吗?