我有一个非常非常大的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) 我正在使用原始套接字接口(import socket)在Python 2.7.5中编写应用程序.
我需要知道是否有一种方法可以注册某种事件,或者如果TCP套接字连接仍然连接并建立,则可以定期测试.
我发现的大多数建议都说"只是尝试从中读取;如果关闭则会出现错误或没有字节." 但是,有时候我还没有准备好接受read它,但我仍然想知道套接字是否关闭,所以例如我可以立即手动重新连接.
此外,read从套接字中删除从缓冲区读取的字节,因此read简单地测试连接"活性"似乎不可行.
有一个后台线程来检查连接活性就可以了.该线程可以每秒检查一次,看看连接是否有效; 如果它被删除,那么它可以调用一个函数,或设置一个变量或其他东西,以便应用程序知道连接已关闭.知道为什么它关闭(由同行重置,超时等)会更有用......
有什么建议吗?
我们都被告知使用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, …
我想初始化一个多维列表.基本上,我想要一个10x10网格 - 一个包含10个列表的列表,每个列表包含10个项目.
每个列表值应初始化为整数0.
在单行中执行此操作的显而易见的方法:myList = [[0]*10]*10将无法工作,因为它会生成一个包含10个对一个列表的引用的列表,因此更改任何行中的项目会在所有行中更改它.
我见过的文档讨论了使用[:]复制列表的问题,但在使用乘法器时仍然无效:myList = [0]*10; myList = myList[:]*10具有与之相同的效果myList = [[0]*10]*10.
如果没有创建一个myList.append()s 循环,有没有一种快速有效的方法来以这种方式初始化列表?
我有一个数据库类,它调用数据库并检索数据.数据被加载到具有的DataTable对象中SqlDataAdapter.然后我想只获取第一行数据(实际上,数据库只会返回一行)并将其转换为JSON字符串.
问题是这样的:如果我简单地传递DataTable到JsonConvert.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往返,而只是从一项数组中取出它?
以下是此测试中的文件:
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) 我有一个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) 我的应用程序有一个自定义音频库,它本身使用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) 我想知道是否有办法在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检测这些信息?
代码:
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(根据 …
c# ×5
python ×5
.net ×2
import ×2
json ×2
json.net ×2
aes ×1
bearer-token ×1
exception ×1
ignore ×1
list ×1
sockets ×1
sql-server ×1
unit-testing ×1
wildcard ×1