C# 使用U-SQL读取包含加密内容的json文件
我使用汇编作为json提取器,它工作正常。我输入的json文件现在只是纯json。我要做的是读取一个包含加密内容的文件 因此,在提取器中,我想使用我的C#方法对字符串进行解密,但我不知道如何使其工作,因为我没有得到任何字符串。这里是提取方法C# 使用U-SQL读取包含加密内容的json文件,c#,azure-data-lake,u-sql,C#,Azure Data Lake,U Sql,我使用汇编作为json提取器,它工作正常。我输入的json文件现在只是纯json。我要做的是读取一个包含加密内容的文件 因此,在提取器中,我想使用我的C#方法对字符串进行解密,但我不知道如何使其工作,因为我没有得到任何字符串。这里是提取方法 public override IEnumerable<IRow> Extract(IUnstructuredReader input, IUpdatableRow output) { // Json.Net
public override IEnumerable<IRow> Extract(IUnstructuredReader input, IUpdatableRow output)
{
// Json.Net
using (var reader = new JsonTextReader(new StreamReader(input.BaseStream)))
{
// Parse Json
// TODO: Json.Net fails with empty input files
var root = JToken.ReadFrom(reader);
// Rows
// All objects are represented as rows
foreach (JObject o in SelectChildren(root, this.rowpath))
{
// All fields are represented as columns
this.JObjectToRow(o, output);
yield return output.AsReadOnly();
}
}
}
谁能给我指出正确的方向吗?谢谢 整个文件是加密的还是JSON文档中的字段?在第一种情况下,您需要在提取器中解密基流。确保将提取器属性atomicFileProcessing设置为true 如果仅加密JSON文档中的文本属性,则有两个选项:
完整文件是加密的还是JSON文档中的字段?在第一种情况下,您需要在提取器中解密基流。确保将提取器属性atomicFileProcessing设置为true 如果仅加密JSON文档中的文本属性,则有两个选项:
通过将提取器更改为以下内容,我成功地解密了json文件的内容
public override IEnumerable<IRow> Extract(IUnstructuredReader input, IUpdatableRow output)
{
// Json.Net
using (var reader = new StreamReader(input.BaseStream))
{
// Parse Json
// TODO: Json.Net fails with empty input files
var text = reader.ReadToEnd();
var decr = Encryption.Decryptor.Decrypt(text);
var root = JToken.Parse(decr);
// Rows
// All objects are represented as rows
foreach (JObject o in SelectChildren(root, this.rowpath))
{
// All fields are represented as columns
this.JObjectToRow(o, output);
yield return output.AsReadOnly();
}
}
}
public override IEnumerable Extract(IUnstuctureDrawer输入,IUpdatableRow输出)
{
//Json.Net
使用(var reader=newstreamreader(input.BaseStream))
{
//解析Json
//TODO:Json.Net因输入文件为空而失败
var text=reader.ReadToEnd();
var decr=Encryption.Decryptor.Decrypt(文本);
var root=JToken.Parse(decr);
//排
//所有对象都表示为行
foreach(SelectChildren中的JObject o(root,this.rowpath))
{
//所有字段都表示为列
这个.jobjectorow(o,输出);
产生返回输出。AsReadOnly();
}
}
}
我将JsonTextReader更改为StreamReader,以便可以将流作为字符串读取。解密后,我将其解析为一个JToken,因此其余的代码仍然像以前一样工作。通过将提取器更改为以下内容,我成功地解密了json文件的内容
public override IEnumerable<IRow> Extract(IUnstructuredReader input, IUpdatableRow output)
{
// Json.Net
using (var reader = new StreamReader(input.BaseStream))
{
// Parse Json
// TODO: Json.Net fails with empty input files
var text = reader.ReadToEnd();
var decr = Encryption.Decryptor.Decrypt(text);
var root = JToken.Parse(decr);
// Rows
// All objects are represented as rows
foreach (JObject o in SelectChildren(root, this.rowpath))
{
// All fields are represented as columns
this.JObjectToRow(o, output);
yield return output.AsReadOnly();
}
}
}
public override IEnumerable Extract(IUnstuctureDrawer输入,IUpdatableRow输出)
{
//Json.Net
使用(var reader=newstreamreader(input.BaseStream))
{
//解析Json
//TODO:Json.Net因输入文件为空而失败
var text=reader.ReadToEnd();
var decr=Encryption.Decryptor.Decrypt(文本);
var root=JToken.Parse(decr);
//排
//所有对象都表示为行
foreach(SelectChildren中的JObject o(root,this.rowpath))
{
//所有字段都表示为列
这个.jobjectorow(o,输出);
产生返回输出。AsReadOnly();
}
}
}
我将JsonTextReader更改为StreamReader,以便可以将流作为字符串读取。解密后,我将其解析为一个JToken,因此代码的其余部分仍然像以前一样工作。感谢您的输入。完整内容将被解密,而不仅仅是字段。是的,我正在尝试解密基本流,但到目前为止没有成功。我也不能真正调试它,这也没用。至少我还没找到方法。我可以将基流转换为一个字符串(reader.ReadAsString())并对其进行解密,但不需要;I don’我不知道如何从那里开始我发现我可以创建单元测试示例项目,所以现在尝试一下,这样我就可以看到发生了什么:)你更新了你的VS工具了吗?现在,您甚至可以对失败的顶点进行本地调试。感谢您的输入。完整内容将被解密,而不仅仅是字段。是的,我正在尝试解密基本流,但到目前为止没有成功。我也不能真正调试它,这也没用。至少我还没找到方法。我可以将基流转换为一个字符串(reader.ReadAsString())并对其进行解密,但不需要;I don’我不知道如何从那里开始我发现我可以创建单元测试示例项目,所以现在尝试一下,这样我就可以看到发生了什么:)你更新了你的VS工具了吗?现在,您甚至可以对失败的顶点进行本地调试。