【问题标题】:how to split single data from string..? [closed]如何从字符串中拆分单个数据..? [关闭]
【发布时间】:2013-12-05 09:30:37
【问题描述】:

我想从一个字符串中获取单个数据,任何人都可以帮助我单独拆分 ID 内容。我的存储结果值的代码:

private void sendPostCompleted(object sender, UploadStringCompletedEventArgs e)
{
    try
    {
        MessageBox.Show("Success..");
        MessageBox.Show(e.Result);
        string res=(string)e.Result;//here res contains my data..
        //need to get ID value alone.
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

【问题讨论】:

  • 看起来您正在返回一个 JSON 字符串。你为什么不将它反序列化为一个类?它比容易出错的字符串解析等要容易得多...拆分字符串时会出现这种情况......
  • 我是 WP8 的新手,如果你能给我一些例子,那会很有帮助..
  • 查看to autocreate your class for Json 复制粘贴您的 json 字符串(如果是私有数据,请修改值)。那就看看这里如何how-to-parse-json-in-c/serialize
  • 反序列化 JSON 并不特定于 WP8。有很多资源(包括教程)可以帮助你。尝试查找 JSON.Net(来自 Newtonsoft)

标签: c# .net windows-phone-7 split webclient


【解决方案1】:

使用json2csharp 为您的 JSON 字符串创建一个 C# 类。 JSON 中的简化示例:

public class RootObject
{
    public string name { get; set; }
    public string description { get; set; }
    public string timezone { get; set; }
    public string id { get; set; }
}
//You can make the id of type int if you want

使用 JSON 的最快方法是使用 Json.NET。下载 zip 并使用文件夹 Portable40 中的 dll,这是与 Windows Phone 7 兼容的版本。在您的项目中引用 dll,然后您的代码应该类似于以下内容:

string jsonString = "{\"name\":\"Qwer\", \"description\":\"\", \"timezone\":\"UTC\", \"id\":\"2912\"}";
var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(jsonString);
int id = Convert.ToInt32(obj.id);
//value of id: 2912

【讨论】:

    【解决方案2】:

    如果你不想让一个类反序列化,你可以这样做:

    JsonObject jsonObject = new JsonObject(e.Result);
    string res= jsonObject["id"];
    

    【讨论】:

      【解决方案3】:

      我解决了我的问题伙计们。这是我的示例代码。它运行良好。

      dynamic stuff = JsonConvert.DeserializeObject(res);
      
      int id=stuff.id;
      

      【讨论】:

      • 非常感谢您指出您自己的答案是正确的,而其他人试图帮助您...
      • 它对我有用,所以我更新了..
      • 但是你得到了解决方案,这要归功于帮助你的人,而不是你自己。
      • 好的 :) 谢谢大家..
      【解决方案4】:

      您可能应该将其反序列化为一个对象,然后检索您的值。

      首先创建一个类,将所有字段作为参数。

          class ResponseObject{
            public string Name{get;set;}
            public string Description{get;set;}
            ...
          }
      

      等等。

      然后你可以反序列化这个响应,

      ResponseObject response = new JavaScriptSerializer().Deserialize<ResponseObject>(res);
      

      【讨论】:

      • 制作 C# 类的快速方法是(在 >=VS2012 中)Edit&gt;Paste Special&gt;Paste JSON as classes... 显然您需要先复制它。
      猜你喜欢
      • 2017-12-06
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多