C# 如何解析C中的示例字符串#

C# 如何解析C中的示例字符串#,c#,json,string,parsing,C#,Json,String,Parsing,我有这根绳子 [ { "url_short":"http:\/\/sample.com\/8jyKHv", "url_long":"http:\/\/www.sample.com\/", "type":0 } ] 我想要的是得到http:\/\/sample.com\/8jyKHv并将其翻译成 http://sample.com/8jyKHv 可能吗?该字符串是一个JSON字符串,因此您可以创建一个类来获取如下值 public

我有这根绳子

[
    {
        "url_short":"http:\/\/sample.com\/8jyKHv",
        "url_long":"http:\/\/www.sample.com\/",
        "type":0
    }
]
我想要的是得到http:\/\/sample.com\/8jyKHv并将其翻译成

http://sample.com/8jyKHv

可能吗?

该字符串是一个JSON字符串,因此您可以创建一个类来获取如下值

public class Rootobject
{
    public Class1[] Property1
    {
        get;
        set;
    }
}

public class Class1
{
    public string url_short
    {
        get;
        set;
    }
    public string url_long
    {
        get;
        set;
    }
    public int type
    {
        get;
        set;
    }
}
string json = "[{"url_short":"http:\/\/sample.com\/8jyKHv","url_long":"http:\/\/www.sample.com\/","type":0}]";
List<Rootobject> ro = JsonConvert.DeserializeObject<List<Rootobject>>(json);
string ururl = ro[0].Propert1[0].url_short;
在这堂课之后,你可以得到这样的数据

public class Rootobject
{
    public Class1[] Property1
    {
        get;
        set;
    }
}

public class Class1
{
    public string url_short
    {
        get;
        set;
    }
    public string url_long
    {
        get;
        set;
    }
    public int type
    {
        get;
        set;
    }
}
string json = "[{"url_short":"http:\/\/sample.com\/8jyKHv","url_long":"http:\/\/www.sample.com\/","type":0}]";
List<Rootobject> ro = JsonConvert.DeserializeObject<List<Rootobject>>(json);
string ururl = ro[0].Propert1[0].url_short;
string json=“[{”url\u short:“http:\/\/sample.com\/8jyKHv”,“url\u long:“http:\/\/www.sample.com\/”,“type”:0}];
List ro=JsonConvert.DeserializeObject(json);
字符串ururl=ro[0]。属性1[0]。url\u short;

JSON方式肯定是推荐的,但不能说明太多。下面是使用正则表达式的另一种方法:

Regex rgxUrl = new Regex("\"url_short\":\"(.*?)\",\"");
Match mUrl = rgxUrl.Match(yourString);

string url = Regex.Replace(mUrl.Groups[1].Value, @"\", "");
这个字符串是JSON

您可以使用

例如:

using System;
using System.Collections.Generic;
using Newtonsoft.Json;

public class RootObject
{
    public string url_short { get; set; }
    public string url_long { get; set; }
    public int type { get; set; }
}

public class Program
{
    static public void Main()
    {
        string j = "[{\"url_short\":\"http:\\/\\/sample.com\\/8jyKHv\",\"url_long\":\"http:\\/\\/www.sample.com\\/\",\"type\":0}]";

        List<RootObject> ro = JsonConvert.DeserializeObject<List<RootObject>>(j);

        Console.WriteLine(ro[0].url_short);                 
    }    
}
使用系统;
使用System.Collections.Generic;
使用Newtonsoft.Json;
公共类根对象
{
公共字符串url_short{get;set;}
公共字符串url_long{get;set;}
公共int类型{get;set;}
}
公共课程
{
静态公共void Main()
{
字符串j=“[{\”url\\\\\\\”:\“http:\\/\\/sample.com\\/8jyKHv\”,\“url\\\\\/\\/www.sample.com\\\/\”,\“type\\”:0}];
List ro=JsonConvert.DeserializeObject(j);
Console.WriteLine(ro[0].url\u-short);
}    
}
答复:

试试这个

创建一个如下所示的类

注意:您可以在VisualStudio中使用“粘贴特殊”选项来生成与JSON相关的所有类

编辑->粘贴特殊->将Json粘贴为类

它将创建与JSON相关的所有类

    public class url_details
    {
        public string url_short { get; set; }
        public string url_long { get; set; }
        public int type { get; set; }
    }


    public List<url_details> json_deserialized()
    {
        string json = "[{\"url_short\":\"http:\\/\\/sample.com\\/8jyKHv\",\"url_long\":\"http:\\/\\/www.sample.com\\/\",\"type\":0}]";

        List<url_details> items = new List<url_details>();
        items = JsonConvert.DeserializeObject<List<url_details>>(json);

        return items;
    }
公共类url\u详细信息
{
公共字符串url_short{get;set;}
公共字符串url_long{get;set;}
公共int类型{get;set;}
}
公共列表json_反序列化()
{
字符串json=“[{\”url\\\\\\”:\“http:\\/\\/sample.com\\/8jyKHv\”,\“url\\\\/\\/www.sample.com\\/\”,\“type\\”:0}];
列表项=新列表();
items=JsonConvert.DeserializeObject(json);
退货项目;
}
您可以访问如下所示的元素

   List<url_details> obj = json_deserialized();

   string url_short = obj[0].url_short;
List obj=json_反序列化();
字符串url\u short=obj[0]。url\u short;

这里有两个选项。要么将其视为字符串并使用substring和replace。要么将其视为JSON,然后将其反序列化为类对象。这两种方法都会产生JSON反序列化方法所需的结果,我建议使用JSON方法,而不是字符串/substring/replace方法。删除\是过时的,因为反序列化后它就消失了。您的json示例字符串错误(缺少“\”)。请参阅specsOne error left:json包含一个对象数组;o) 必须是Regex.Replace(mUrl.Groups[1].Value,@“\\”,“”)@没有
@
已在转义字符串。要么
“\\”
要么
@“\”