从包含多个不必要字符的字符串创建列表

本文关键字:字符串 创建 列表 字符 包含多 不必要 | 更新日期: 2023-09-27 18:29:24

我使用这个字符串:

{"0":{"title":"iPhone"},"1":{"title":"iPod"},"2":{"title":"iPad"},"length":3,"prevObject":{"0":{},"1":{},"2":{},"length":3,"prevObject":{"0":{},"length":1,"context":{"location":{},"jQuery18308480830912211994":1},"selector":"#mycart"},"context":{"location":{},"jQuery18308480830912211994":1},"selector":"#mycart li"},"context":{"location":{},"jQuery18308480830912211994":1}}

我想清除这个字符串,并生成一个<List>或数组,其中相应地包含3个项:Iphone iPod Ipad我产生上面的代码是:

$("#btngetCart").live("click", function () {
            var items = $('#mycart').find('li').map(function () {
                var item = {};

                item.title = $(this).text();
                return item;
            });
            var json = JSON.stringify(items);
            $.ajax({
                type: 'POST',
                url: "WebForm5.aspx/GetCart",
                data: "{item:" + JSON.stringify(json) + "}",
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                success: function (r) {

                }
            });
        });

以及后面的代码:

[WebMethod(EnableSession = true)]
        public static string GetCart(string item)
        {
            HttpContext.Current.Session["f"] = item;
            return item;

        }

从包含多个不必要字符的字符串创建列表

using Newtonsoft.Json.Linq;
string json = @"
    {""0"":{""title"":""iPhone""},""1"":{""title"":""iPod""},""2"":{""title"":""iPad""},""length"":3,""prevObject"":{""0"":{},""1"":{},""2"":{},""length"":3,""prevObject"":{""0"":{},""length"":1,""context"":{""location"":{},""jQuery18308480830912211994"":1},""selector"":""#mycart""},""context"":{""location"":{},""jQuery18308480830912211994"":1},""selector"":""#mycart li""},""context"":{""location"":{},""jQuery18308480830912211994"":1}}
";
JObject obj = JObject.Parse(json);
int length = (int)obj.GetValue("length");
var titles = new List<string>();
for (int i = 0; i < length; i++)
{
    JObject item = (JObject) obj.GetValue(i.ToString());
    titles.Add((string) item.GetValue("title"));
}

别忘了添加Json.Net nuget:http://www.nuget.org/packages/Newtonsoft.Json/

这里有一种更.NET的方法:

使用NuGet安装Json.Net。然后使用这样的东西:

var json = @"{""0"":{""title"":""iPhone""},""1"":{""title"":""iPod""},""2"":{""title"":""iPad""},""length"":3,""prevObject"":{""0"":{},""1"":{},""2"":{},""length"":3,""prevObject"":{""0"":{},""length"":1,""context"":{""location"":{},""jQuery18308480830912211994"":1},""selector"":""#mycart""},""context"":{""location"":{},""jQuery18308480830912211994"":1},""selector"":""#mycart li""},""context"":{""location"":{},""jQuery18308480830912211994"":1}}";
var @object = JObject.Parse(json);
var length = (int)@object["length"];
var indices = Enumerable.Range(0, length);
var titles = indices.Select(index => @object[index.ToString()]["title"]).ToList();