小编fdm*_*ion的帖子

如何在Json.NET中将巨大的JSON文件解析为流?

我有一个非常非常大的JSON文件(1000+ MB)相同的JSON对象.例如:

[
    {
        "id": 1,
        "value": "hello",
        "another_value": "world",
        "value_obj": {
            "name": "obj1"
        },
        "value_list": [
            1,
            2,
            3
        ]
    },
    {
        "id": 2,
        "value": "foo",
        "another_value": "bar",
        "value_obj": {
            "name": "obj2"
        },
        "value_list": [
            4,
            5,
            6
        ]
    },
    {
        "id": 3,
        "value": "a",
        "another_value": "b",
        "value_obj": {
            "name": "obj3"
        },
        "value_list": [
            7,
            8,
            9
        ]

    },
    ...
]
Run Code Online (Sandbox Code Playgroud)

根JSON列表中的每个项都遵循相同的结构,因此可以单独反序列化.我已经编写了C#类来接收这些数据,并且反序列化包含单个对象的JSON文件而没有列表按预期工作.

起初,我试图在循环中直接反序列化我的对象:

JsonSerializer serializer = new JsonSerializer();
MyObject o;
using (FileStream s = File.Open("bigfile.json", FileMode.Open))
using (StreamReader sr …
Run Code Online (Sandbox Code Playgroud)

c# json json.net

21
推荐指数
3
解决办法
2万
查看次数

Python:检测套接字何时因任何原因断开连接?

我正在使用原始套接字接口(import socket)在Python 2.7.5中编写应用程序.

我需要知道是否有一种方法可以注册某种事件,或者如果TCP套接字连接仍然连接并建立,则可以定期测试.

我发现的大多数建议都说"只是尝试从中读取;如果关闭则会出现错误或没有字节." 但是,有时候我还没有准备好接受read它,但我仍然想知道套接字是否关闭,所以例如我可以立即手动重新连接.

此外,read从套接字中删除从缓冲区读取的字节,因此read简单地测试连接"活性"似乎不可行.

有一个后台线程来检查连接活性就可以了.该线程可以每秒检查一次,看看连接是否有效; 如果它被删除,那么它可以调用一个函数,或设置一个变量或其他东西,以便应用程序知道连接已关闭.知道为什么它关闭(由同行重置,超时等)会更有用......

有什么建议吗?

python sockets

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

Python:通配符子集导入

我们都被告知使用from module import *是一个坏主意.但是,有没有办法导入使用通配符的内容的子集module

例如:

module.py:

MODULE_VAR1 = "hello"
MODULE_VAR2 = "world"
MODULE_VAR3 = "The"
MODULE_VAR4 = "quick"
MODULE_VAR5 = "brown"
...
MODULE_VAR10 = "lazy"
MODULE_VAR11 = "dog!"
MODULE_VAR12 = "Now"
MODULE_VAR13 = "is"
...
MODULE_VAR98 = "Thats"
MODULE_VAR99 = "all"
MODULE_VAR100 = "folks!"

def abs():
    print "Absolutely useful function: %s" % MODULE_VAR1
Run Code Online (Sandbox Code Playgroud)

显然我们不想使用,from module import *因为我们要覆盖这个abs功能.但是假设我们DID希望所有MODULE_VAR*变量都可以在本地访问.

简单地推杆from module import MODULE_VAR*不起作用.有没有办法实现这个目标?

我使用了100个变量作为说明,因为from module import MODULE_VAR1, MODULE_VAR2, …

python import wildcard

10
推荐指数
2
解决办法
2063
查看次数

Python:初始化多维列表

我想初始化一个多维列表.基本上,我想要一个10x10网格 - 一个包含10个列表的列表,每个列表包含10个项目.

每个列表值应初始化为整数0.

在单行中执行此操作的显而易见的方法:myList = [[0]*10]*10将无法工作,因为它会生成一个包含10个对一个列表的引用的列表,因此更改任何行中的项目会在所有行中更改它.

我见过的文档讨论了使用[:]复制列表的问题,但在使用乘法器时仍然无效:myList = [0]*10; myList = myList[:]*10具有与之相同的效果myList = [[0]*10]*10.

如果没有创建一个myList.append()s 循环,有没有一种快速有效的方法来以这种方式初始化列表?

python list

9
推荐指数
2
解决办法
3万
查看次数

JSON.NET:如何在没有数组的情况下从DataTable对象中仅序列化一行?

我有一个数据库类,它调用数据库并检索数据.数据被加载到具有的DataTable对象中SqlDataAdapter.然后我想只获取第一行数据(实际上,数据库只会返回一行)并将其转换为JSON字符串.

问题是这样的:如果我简单地传递DataTableJsonConvert.SerializeObject方法,例如JsonConvert.SerializeObject(dt),我得到一个JSON字符串,但它是一个对象的数组.例如:

[ {"id":"1","value":"hi"} ]
Run Code Online (Sandbox Code Playgroud)

期望接收此JSON的另一端的代码不需要数组,它只需要一个对象.所以基本上我需要上面的,但没有方括号[].所以期望的输出是:

{"id":"1","value":"hi"}
Run Code Online (Sandbox Code Playgroud)

我现在使用的天真的方法是回到result.Substring(1,result.Length - 2)呼叫者.假设JSON对象存在于仅包含一个对象的单个数组中,这具有剥离[]关闭返回文本的效果.但似乎应该有一种"适当"的方式来实现这一目标.

最明显的事情似乎是使用RowsDataTable 的属性.但是,如果我尝试这样做JsonConvert.SerializeObject(dt.Rows[0]),我不会得到这一行,我得到一个关于行状态的整个数据集合,其中一个项目Table只是引用整个表格,所以如果超过发生了一行我会得到所有的行,而不仅仅是我想要的行.

我尝试过的另一种方法是从整个过程到JSON DataTable.我序列化DataTable,然后将结果解析成一个,JArray这样我就可以获得第一个值,然后再次重新序列化.但这似乎没必要.

以下是尝试序列化Row对象的原因:

{
    "RowError":"",
    "RowState":2,
    "Table":[
        {
            "id":"1",
            "value":"hello"
        }
    ],
    "ItemArray":[
        "1","hello"
    ],
    "HasErrors":false
}
Run Code Online (Sandbox Code Playgroud)

我能做到这一点的"正确"的方式,而不只是剥离[]落弦?换句话说,我是否可以将数据从一行DataTable作为单个JSON对象获取,而不是在数组中,而不是通过JSON往返,而只是从一项数组中取出它?

c# json json.net

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

Python:使用__import__时执行相对导入?

以下是此测试中的文件:

main.py
app/
 |- __init__.py
 |- master.py
 |- plugin/
 |-  |- __init__.py
 |-  |- p1.py
 |-  |_ p2.py
Run Code Online (Sandbox Code Playgroud)

我们的想法是拥有一个支持插件的应用程序.新的.py或.pyc文件可以放入与我的API相关的插件中.

master.py在应用程序级别有一个文件,其中包含任何和所有插件可能需要访问的全局变量和函数,以及应用程序本身.出于此测试的目的,"app"由app/__ init__.py中的测试函数组成.在实践中,应用程序可能会被移动到单独的代码文件,但之后我只是import master在该代码文件中使用以引入引用master.

这是文件内容:

main.py:

import app

app.test()
app.test2()
Run Code Online (Sandbox Code Playgroud)

应用程序/ __ init__.py:

import sys, os

from plugin import p1

def test():
        print "__init__ in app is executing test"
        p1.test()

def test2():
        print "__init__ in app is executing test2"
        scriptDir = os.path.join ( os.path.dirname(os.path.abspath(__file__)), "plugin" )
        print "The scriptdir is %s" % scriptDir
        sys.path.insert(0,scriptDir)
        m = …
Run Code Online (Sandbox Code Playgroud)

python import

7
推荐指数
2
解决办法
6089
查看次数

在C#(web api)中测试经过身份验证的方法(使用bearer令牌)的正确方法

我有一个Web API,其中包含许多方法,这些方法都需要有一个承载令牌才能使用.这些方法都从承载令牌中提取信息.

我想测试API是否在生成时正确填充了承载令牌.我正在使用Microsoft.Owin.Testing框架来编写测试.我有一个看起来像这样的测试:

[TestMethod]
public async Task test_Login() 
{
    using (var server = TestServer.Create<Startup>())
    {
        var req = server.CreateRequest("/authtoken");
        req.AddHeader("Content-Type", "application/x-www-form-urlencoded");
        req.And(x => x.Content = new StringContent("grant_type=password&username=test&password=1234", System.Text.Encoding.ASCII));
        var response = await req.GetAsync();

        // Did the request produce a 200 OK response?
        Assert.AreEqual(response.StatusCode, System.Net.HttpStatusCode.OK);

        // Retrieve the content of the response
        string responseBody = await response.Content.ReadAsStringAsync();
        // this uses a custom method for deserializing JSON to a dictionary of objects using JSON.NET
        Dictionary<string, object> responseData = deserializeToDictionary(responseBody); 

        // Did the …
Run Code Online (Sandbox Code Playgroud)

c# authentication unit-testing bearer-token

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

跟踪Python中被忽略的异常?

我的应用程序有一个自定义音频库,它本身使用BASS库.

我在整个程序中创建并销毁BASS流对象.

当我的程序随机退出时(我还没有弄清楚模式)我在控制台上收到以下通知:

Exception TypeError: "'NoneType' object is not callable" in <bound method stream.__del__ of <audio.audio_player.stream object at 0xaeda2f0>> ignored
Run Code Online (Sandbox Code Playgroud)

我的音频库(audio/audio_player.py [class Stream])包含一个创建BASS流对象的类,然后允许代码对其进行操作.当类被销毁时(在del例程中),它调用BASS_StreamFree来清除BASS可能已分配的任何资源.

(audio_player.py)

from pybass import *
from ctypes import pointer, c_float, c_long, c_ulong, c_buffer
import os.path, time, threading

# initialize the BASS engine
BASS_Init(-1, 44100, 0, 0, None)

class stream(object):
    """Represents a single audio stream"""
    def __init__(self, file):
        # check for file existence
        if (os.path.isfile(file) == False):
            raise ValueError("File %s not found." % file)
        # initialize …
Run Code Online (Sandbox Code Playgroud)

python ignore exception

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

从C#测试AES-NI指令

我想知道是否有办法在C#.NET的主机系统CPU中测试AES-NI 的存在.

让我先说这个问题不是询问如何使用 .NET中的AES-NI.事实证明,只要AESCryptoServiceProvider使用AES-NI就可以使用它.这个结果基于独立的基准测试,我比较了AESCryptoServiceProviderTrueCrypt提供的基准测试的性能,确实支持AES-NI.在使用和不使用AES-NI的两台机器上,结果令人惊讶地相似.

我希望能够测试它的原因是能够向用户表明他们的计算机支持AES-NI.这将是相关的,因为它将减少涉及诸如"但我的朋友也有Core i5但是他的速度快得多的问题"的支持事件.如果程序的用户界面可以向用户指示他们的系统支持或不支持AES-NI,则还可以指示"由于该系统不支持AES-NI,因此性能较低是正常的".

(我们可以感谢英特尔对不同处理器步进的所有困惑!:-))

有没有办法通过WMI检测这些信息?

.net c# aes

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

.NET:如何处理 SQL 查询中可能出现的空值?

代码:

private void DoSomethingWithDatabase(string f1, int f2) 
{
    SqlCommand myCommand = new SqlCommand("SELECT Field1,Field2,Field3 FROM MyTable WHERE Field1 = @F1 AND Field2 = @F2", this.myConn);
    myCommand.Parameters.Add("@F1", System.Data.SqlDbType.VarChar);
    myCommand.Parameters.Add("@F2", System.Data.SqlDbType.Int);

    if (f1 == "") 
        myCommand.Parameters["@F1"].Value = DBNull.Value;
    else
        myCommand.Parameters["@F1"].Value = f1;

    if (f2 < 0)
        myCommand.Parameters["@F2"].Value = DBNull.Value;
    else
        myCommand.Parameters["@F2"].Value = f2;

    // code to do stuff with the results here
}
Run Code Online (Sandbox Code Playgroud)

服务器是 Microsoft SQL Server 实例。

数据库表MyTable包含可为空的字段。因此 null 是执行查询时要搜索的有效值。

从我的阅读以及像这样的测试代码来看,像我在这里所做的那样做的事情不能正常工作,因为显然你不能以这种方式进行“等于空”比较 - 你应该做“IS NULL” .

看起来您可以通过将 ANSI_NULL 设置为 OFF(根据 …

.net c# sql-server

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