这里的"数组"和"对象"都可能不是一个合适的术语,但我确信你得到了我的大陆漂移.
我看到这个示例用于从官方文档序列化/反序列化自定义对象:
product.Name = "Apple";
product.ExpiryDate = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };
string output = JsonConvert.SerializeObject(product);
//{
// "Name": "Apple",
// "ExpiryDate": "2008-12-28T00:00:00",
// "Price": 3.99,
// "Sizes": [
// "Small",
// "Medium",
// "Large"
// ]
//}
Product deserializedProduct = JsonConvert.DeserializeObject<Product>(output);
Run Code Online (Sandbox Code Playgroud)
但我需要反序列化一个对象的"数组"作为JSON元素,如:
IEnumerable<Platypus> deserializedProduct = JsonConvert.DeserializeObject<Platypus>(output);
Run Code Online (Sandbox Code Playgroud)
...要么:
List<Platypus> deserializedProduct = JsonConvert.DeserializeObject<Platypus>(output);
Run Code Online (Sandbox Code Playgroud)
在JsonConvert/JSON.NET方面,需要做些什么才能实现这一目标?
我通过NuGet将Castle Windsor安装到我的Web API项目中(VS 2013; Castle 3.2.1).
我添加了这段代码:
var container = new WindsorContainer();
GlobalConfiguration.Configuration.DependencyResolver = new WindsorDependencyResolver(container);
Run Code Online (Sandbox Code Playgroud)
...从这里到Global.asax.cs的Application_Start方法.
然而,虽然我在我的引用中有Castle.Core和Castle.Windsor,但WindsorDependencyResolver是无法解析的(解析器没有得到解决是多么讽刺).
我该如何解决这个问题?
c# dependency-injection castle-windsor inversion-of-control visual-studio-2013
我发现了为什么占位符“ Home Controller”在这里被调用
我在RouteConfig.cs中注释掉了对HomeController的引用,并添加了一个我希望它调用的Controller:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//If get 404 error re: favicon, see http://docs.castleproject.org/(X(1)S(vv4c5o450lhlzb45p5wzrq45))/Windsor.Windsor-tutorial-part-two-plugging-Windsor-in.ashx or just uncomment the line below:
//routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
//routes.MapRoute(
// name: "Default",
// url: "{controller}/{action}/{id}",
// defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
//);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "DepartmentsController", action = "GetCountOfDepartmentRecords", id = UrlParameter.Optional }
);
} …Run Code Online (Sandbox Code Playgroud) castle-windsor routes repository controller-factory asp.net-web-api-routing
当Address2列为空时,此行:
string address2 = sqlD8aReader.GetString(ADDRESS2_OFFSET);
Run Code Online (Sandbox Code Playgroud)
......失败了:
System.Data.SqlTypes.SqlNullValueException was unhandled by user code
HResult=-2146232015
Message=Data is Null. This method or property cannot be called on Null values.
Source=System.Data
StackTrace:
at System.Data.SqlClient.SqlBuffer.get_String()
at System.Data.SqlClient.SqlDataReader.GetString(Int32 i)
at HandheldServer.Models.SQLServerPOCRepository..ctor() in c:\HandheldServer\HandheldServer\Models\SQLServerPOCRepository.cs:line 58
InnerException:
Run Code Online (Sandbox Code Playgroud)
如何安全地读取可能为null的字符串?它应该以某种方式在SQL中处理(如果是这样,如何?)还是应该在read/C#代码中处理?
我需要按字母顺序排序一个值(invoice_no/invoiceNum).我有以下代码来做到这一点:
string beginningInvoiceNum = string.Empty;
string endingInvoiceNum = string.Empty;
. . .
XDocument doc = XDocument.Parse(stringifiedXML);
var DeliveredItems = doc.Descendants("DSD").Select(delItem => new
{
lineID = delItem.Element("line_id").Value,
invoiceNum = delItem.Element("invoice_no").Value,
UPCCode = delItem.Element("upc_code").Value,
desc = delItem.Element("description").Value,
. . .
}).ToList();
string[] invNums = new string[DeliveredItems.Count];
int i = 0;
foreach (var delItem in DeliveredItems)
{
invNums[i] = delItem.invoiceNum;
i++;
}
Array.Sort(invNums);
beginningInvoiceNum = invNums[0];
//endingInvoiceNum = invNums[invNums.Count - 1]; <= this does not work
endingInvoiceNum = invNums[DeliveredItems.Count-1]; // <= this works …Run Code Online (Sandbox Code Playgroud) 我有这个代码将测试文件保存在我认为是我项目的bin文件夹中:
XDocument doc = XDocument.Parse(stringifiedXML);
doc.Save("testXMLFile.xml");
Run Code Online (Sandbox Code Playgroud)
...但实际上它最终出现在C:\ Program Files(x86)\ IIS Express中
是的,IIS Express正在托管这个Web API应用程序,当从Visual Studio运行应用程序时,我希望将该文件保存到项目的bin文件夹中.为什么这个?
我可以指定我想要保存文件的位置,如下所示:
// In PlatypusGlobals.cs
public static string appDataFolder = HttpContext.Current.Server.MapPath("~/App_Data/");
doc.Save(string.Format("{0}testXMLFile2.xml", PlatypusGlobals.appDataFolder));
Run Code Online (Sandbox Code Playgroud)
...但仍然希望"原始保存"转到bin目录.这是可配置的,还是我只需要将文件保存到IIS Express文件夹中?
我正在使用本教程在我的Android项目中实现SQLite功能.
我有这个SQLiteOpenHelper代码:
public class HHSSQLiteHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "HHS.db";
private static final String TABLE_VENDORS = "vendors";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_VENDORID = "vendorId";
public static final String COLUMN_COMPANYNAME = "companyName";
public HHSSQLiteHandler(Context context, String vendor,
SQLiteDatabase.CursorFactory factory, int company) {
super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}
. . .
Run Code Online (Sandbox Code Playgroud)
...但尝试以这种方式实例化该类:
protected void onPostExecute(String result) {
try {
JSONArray jsonArr …Run Code Online (Sandbox Code Playgroud) 在这段代码上:
public static string Base64FromFileName(string fileName)
{
try
{
FileInfo fInfo = new FileInfo(fileName);
long numBytes = fInfo.Length;
FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fStream);
byte[] bdata = br.ReadBytes((int)numBytes);
br.Close();
fStream.Close();
return Convert.ToBase64String(bdata);
}
catch(Exception e)
{
throw e;
}
}
Run Code Online (Sandbox Code Playgroud)
...我得到了Visual Studio的代码分析工具,警告," 不要多次丢弃对象......为了避免生成System.ObjectDisposedException,你不应该在对象上多次调用Dispose " fStream.Close();" 线.
为什么?fStream是否在上面的行中,BinaryReader关闭了?
无论如何,我不会更好地重构它:
. . .
using (FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
using (BinaryReader br = new BinaryReader(fStream))
{
byte[] bdata = br.ReadBytes((int)numBytes);
} //br.Close();
} …Run Code Online (Sandbox Code Playgroud) 我正在使用RawCap捕获从我的开发机器(一个应用程序)发送到自己(另一个应用程序)的数据包.我可以把它写入一个文件,如下所示:
RawCap.exe 192.168.125.50 piratedPackets.pcap
Run Code Online (Sandbox Code Playgroud)
...然后在Wireshark中打开*.pcap文件以检查详细信息.当我从Postman调用我的REST方法时,这有效,但是当使用Fiddler的Composer选项卡尝试相同时,*.pcap文件最终为空.我想这可能是因为我关闭RawCap的方式本身就是原始的 - 我只是关闭了命令提示符.打字"退出"在忙于捕捉时什么都不做.
如果在掠夺战利品之前捕获的数据包沉入海底,我怎样才能像现代的Mansel Alcantra一样?我怎样才能优雅地关闭RawCap,以便它(希望)将其内容保存到日志(*.pcap)文件中?
有没有可以从文本中提取人名和地名的 C# 算法?
例如,给定以下文本:
St. Mark died at Alexandria, in Egypt. He was martyred, I think.
However, that has nothing to do with my legend. About the founding of
the city of Venice--
Run Code Online (Sandbox Code Playgroud)
(摘自马克吐温的《国外的无辜者》)
...有什么方法可以提取:
St. Mark
Alexandria (or better yet, "Alexandria, Egypt")
Venice
Run Code Online (Sandbox Code Playgroud)
?
我意识到没有办法获得 100% 的准确度(其中捕获所有地名和人名,并且不添加“误报”),但 80% 的准确度可能非常有价值。
我知道每个单词都可以与百科全书之类的进行比较,但一定有更好的方法。另外,算法怎么知道如何组合“St.”?和“马克”并将“埃及亚历山大”视为“埃及亚历山大”?
c# ×7
generic-list ×2
analyzer ×1
android ×1
arrays ×1
bin ×1
binaryreader ×1
dispose ×1
fiddler ×1
filestream ×1
iis-express ×1
indexer ×1
isnull ×1
java ×1
json ×1
json.net ×1
parsing ×1
pcap ×1
postman ×1
repository ×1
routes ×1
sorting ×1
sql ×1
sql-server ×1
sqlite ×1
t-sql ×1
text ×1