小编Pet*_*ter的帖子

将cookie字符串转换为Python字典

在Fiddler中,我使用从客户端发送的以下cookie字符串捕获了HTTPS请求(在Inspectors> Raw中可见):

Cookie: devicePixelRatio=1; ident=exists; __utma=13103r6942.2918; __utmc=13103656942; __utmz=13105942.1.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); mp_3cb27825a6612988r46d00tinct_id%22%3A%201752338%2C%22%24initial_referrer%22%3A%20%22https%3A%2F%2Fwww.pion_created_at%22%3A%20%222015-08-03%22%2C%22platform%22%3A%20%22web%22%2C%%22%3A%20%%22%7D; t_session=BAh7DUkiD3Nlc3NpbWVfZV9uYW1lBjsARkkiH1BhY2lmaWMgVGltZSAoVVMgJiBDYW5hZGEpBjsAVEkiFXNpZ25pbl9wZXJzb25faWQGOwBGaQMSvRpJIhRsYXN0X2xvZ2luX2RhdGUGOwBGVTogQWN0aXZlU3VwcG9ydDo6VGltZVdpdGhab25lWwhJdToJVGltZQ2T3RzAAABA7QY6CXpvbmVJIghVVEMGOwBUSSIfUGFjaWZpZWRfZGFzaGJvYXJkX21lc3NhZ2UGOwBGVA%3D%3D--6ce6ef4bd6bc1a469164b6740e7571c754b31cca
Run Code Online (Sandbox Code Playgroud)

我想在Python请求请求中使用此cookie.(我略微修改了cookie,因此它不能被读者用于恶意目的!).

但是,请求似乎使用字典格式发送cookie,而我将上述字符串/ blob转换为字典格式时遇到问题.

我的问题是:

  • 有没有一种自动方式将字符串(如我在Fiddler中捕获的cookie)转换为Python中的字典?

python cookies dictionary fiddler

10
推荐指数
1
解决办法
9486
查看次数

判断 JToken 是否是叶子

我正在尝试动态查找其结构事先未知的 JSON 对象的叶节点的名称。首先,我将字符串解析为 JToken 列表,如下所示:

        string req = @"{'creationRequestId':'A',
                        'value':{
                            'amount':1.0,
                            'currencyCode':'USD'
                        }
                        }";
        var tokens = JToken.Parse(req);
Run Code Online (Sandbox Code Playgroud)

然后我想确定哪些是叶子。在上面的例子中,'creationRequestId':'A''amount':1.0'currencyCode':'USD'都是树叶和名称creationRequestIdamount以及currencyCode

尝试有效,但有点丑

下面的示例递归遍历 JSON 树并打印叶子名称:

    public static void PrintLeafNames(IEnumerable<JToken> tokens)
    {
        foreach (var token in tokens)
        {
            bool isLeaf = token.Children().Count() == 1 && !token.Children().First().Children().Any();
            if (token.Type == JTokenType.Property && isLeaf)
            {
                Console.WriteLine(((JProperty)token).Name);
            }

            if (token.Children().Any())
                PrintLeafNames(token.Children<JToken>());
        }
    }
Run Code Online (Sandbox Code Playgroud)

这有效,打印:

creationRequestId
amount
currencyCode
Run Code Online (Sandbox Code Playgroud)

但是,我想知道是否有一个不那么难看的表达式来确定 JToken 是否是叶子:

bool isLeaf = token.Children().Count() …
Run Code Online (Sandbox Code Playgroud)

c# json json.net

3
推荐指数
1
解决办法
1139
查看次数

从JSON自动生成C#类,包括属性初始值设定项

有许多很好的方法可以从JSON自动生成C#代码,例如此处此处.

但是,生成的代码不包含属性初始值设定项.例如,以下JSON:

{
"Name" : "Blastoise"
}
Run Code Online (Sandbox Code Playgroud)

得到反序列化:

public class RootObject
{
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

大概这是设计的,因为JSON中使用的值可能会被覆盖,所以添加初始化器可能会让那些不想要它们的人烦恼.

但如果我想要怎么办?如果没有手动手动添加每个值,有没有办法将JSON反序列化为以下内容?

public class RootObject
{
    public string Name { get; set; } = "Blastoise";
}
Run Code Online (Sandbox Code Playgroud)

显然,在这种情况下,手动编辑很容易,但对于较大的JSON对象,手动编辑变得乏味.

c# json

1
推荐指数
1
解决办法
746
查看次数

标签 统计

c# ×2

json ×2

cookies ×1

dictionary ×1

fiddler ×1

json.net ×1

python ×1