NewtonSoft.Json解析json回调

时间:2015-02-04 17:32:30

标签: c# json

我有这个回调

{
  "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。 请帮帮我。

4 个答案:

答案 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_responsestring,其中包含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来解析JObjectJArray个对象......

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

......你可以试试这个......

JObject data = (JObject)JToken.Parse(json_response);
label1.Content = data["playercount"].ToString() + " from " +
                 data["maxplayers"].ToString();

参考

  1. Json.NET
  2. Json.NET Documentation
  3. LINQ to JSON
  4. Parsing JSON
  5. Querying JSON with LINQ
  6. JToken.Item Property
  7. Newtonsoft.Json.Linq Namespace

答案 3 :(得分:-3)

你试过了吗?

....
"uptime": "0.05:14:08",
"serverpassword": false,
"label1" : function(){return playercount + ' from ' + maxplayers;}
}

这就是你想要的吗?