Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C#二维字节[]到JSON.NET再到C#字节[]或Javascript等效失败_C#_Javascript_Json_Wcf_Json.net - Fatal编程技术网

从C#二维字节[]到JSON.NET再到C#字节[]或Javascript等效失败

从C#二维字节[]到JSON.NET再到C#字节[]或Javascript等效失败,c#,javascript,json,wcf,json.net,C#,Javascript,Json,Wcf,Json.net,我需要将字节[]从C#WCF Web服务发送到JSON客户端 原始WCF结果如下(在倒数第二行中查找AttributeData): {“sa”:[“bctvgtmz5zcch34szcsqrwq3b7qvxsipe57vj7yz/TwDNO+V3UkMr6wZKn8Fiu9+/YNG0iESAKz4EcbimeLzQU=”,“BHez/TgkoKbRwTu/lqS18h1hagY9N9j6/+czhuhachpkptgsomoznozdinkdr7j6m+1vaqrtcrvc2qfi4qf6nf

我需要将字节[]从C#WCF Web服务发送到JSON客户端

原始WCF结果如下(在倒数第二行中查找
AttributeData
):

{“sa”:[“bctvgtmz5zcch34szcsqrwq3b7qvxsipe57vj7yz/TwDNO+V3UkMr6wZKn8Fiu9+/YNG0iESAKz4EcbimeLzQU=”,“BHez/TgkoKbRwTu/lqS18h1hagY9N9j6/+czhuhachpkptgsomoznozdinkdr7j6m+1vaqrtcrvc2qfi4qf6nfe0brq=”,“bl4dnzqmqmv/kLa5n+lviuzizz2bsk2bsjbjjjjjjjw9wjjjjjjjjjw9nerjjjw9w9wjjjjjjjjjjjjjjjjjjjjjj,“BPdEcJW8iVB74Cvxm720vVwxDnbVTm/JRKZ5VPB12JOXTLTCTO7WH9IEMQG9OARVGDJTEVMVIF09TVTAT7ULS=”,“BFOZJJJJJJRURGN8PQSZEKRUOVMYBTFUJ5UITG563RH08POUKBRCFGLYLUYZEV8M94H1FCV+Zg8i1PI0vWkgOEmlM=”,“sb:”,“sb:[“BNTHLQWFZKFN/gFhQ+XAWFHQ+XAWFUONLZHBXUC1UMTQPTRK5F5F5FZK5FK5FZK5FZK5FZK5FZZKKKK5FZZZKKKKKKKKKKBL6NBGy6vzJmPOJKu+WMQffLvnYw8gA+7ZYiANTOP+/5YPVELHSUVA9OXS6CUGSYVSAJIAKV96ZBVAYP9/2D0=“,”Bewruo7QXBPH68LEK7QTXAF064FBE8KTPY8MQFCAAZ/nB10IHMnKBSdiU+nwNhnSnbc7zCsDSzA825iDQLv9yU=“,”BIJYfLEMeF+V6IG9jZBcEP4vp0FhEejX46uEup/LY890NQEJFYFYFYFYF4FYUEGZYUG0F=“,”,”BYUKZYUKZZYUKZYUYUYLZZZYUYL0TBMwBbG/n3ylmxyo3wbxe6nODXyvJ0VpldnRZ6Wgpkn7CVcJMyXTMmhv5rxwwshq5Wbt6tFA4c3Bwy284KAAj5yI=“”,“sz:“bn39atet17jdki02lcer5eqprs2n3f1q2te+BTDNY/hulco8gu3hhgpvx7/kPN7KmHBJlmqniKBxx5nOcXwE=“”

“sid”:“这是新会话 id“,”ti“:”TokenData“,”NumberOfTokens“:5,“AttributeData:”[“QXR0cmlidXRlMA=”,“QXR0cmlidXRlMQ=”,“QXR0cmlidXRlMg=”,“QXR0cmlidXRlMw=”,“QXR0cmlidXRlNA=”]

客户端

C#消费者的代码如下所示:

 var converter = new ExpandoObjectConverter();
 dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(dataJsonAsListedAbove, converter);
 byte[][] a = (byte[][]) obj.AttributeData;
//  byte[][] a = obj.AttributeData;  // same error
        byte[][] attributes = null;
        if (attributes == null)
        {
            // Evaluate the client proposed attributes and add demo data in certain circumstances
            List<byte[]> attList = new List<byte[]>();
            for (int i = 0; i < ikap.IssuerParameters.E.Length; i++)
            {
                attList.Add(encoding.GetBytes("Attribute" + i));
            }
            attributes = attList.ToArray();
        }

   //
  //  snip.. .firstMessage is a JSONString that we are appending to using this awkward method
  //
    dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(firstMessage, converter);
        obj.sid = "this is the new session id";
        obj.ti = "TokenData"; 
        obj.NumberOfTokens = 5;
        obj.AttributeData = attributes;

    // Returning the JSON as a stream so that .NET WCF doesn't escape the raw JSON we're sending.
    return returnAsStream(JsonConvert.SerializeObject(obj));
var converter=新的ExpandoObjectConverter();
dynamic obj=JsonConvert.DeserializeObject(dataJsonAsListedAbove,converter);
字节[][]a=(字节[][])obj.AttributeData;
//字节[][]a=obj.AttributeData;//相同错误
最后一行出现的错误如下所示

RuntimeBinderException未处理

类型的未处理异常 中出现“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException” System.Core.dll

其他信息:无法隐式转换类型 “System.Collections.Generic.List”到“byte[]”

问题

如何从C#中的JSON正确解码二维数组[][]

供参考,C#服务器代码如下所示:

 var converter = new ExpandoObjectConverter();
 dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(dataJsonAsListedAbove, converter);
 byte[][] a = (byte[][]) obj.AttributeData;
//  byte[][] a = obj.AttributeData;  // same error
        byte[][] attributes = null;
        if (attributes == null)
        {
            // Evaluate the client proposed attributes and add demo data in certain circumstances
            List<byte[]> attList = new List<byte[]>();
            for (int i = 0; i < ikap.IssuerParameters.E.Length; i++)
            {
                attList.Add(encoding.GetBytes("Attribute" + i));
            }
            attributes = attList.ToArray();
        }

   //
  //  snip.. .firstMessage is a JSONString that we are appending to using this awkward method
  //
    dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(firstMessage, converter);
        obj.sid = "this is the new session id";
        obj.ti = "TokenData"; 
        obj.NumberOfTokens = 5;
        obj.AttributeData = attributes;

    // Returning the JSON as a stream so that .NET WCF doesn't escape the raw JSON we're sending.
    return returnAsStream(JsonConvert.SerializeObject(obj));
byte[][]属性=null;
如果(属性==null)
{
//评估客户建议的属性,并在特定情况下添加演示数据
List attList=新列表();
对于(int i=0;i
我在你的json中没有看到任何二维数组

var obj  = JsonConvert.DeserializeObject<AClass>(DATA);
foreach (var data in obj.AttributeData)
{
    var buf = Convert.FromBase64String(data);
    Console.WriteLine(Encoding.UTF8.GetString(buf));
}
var obj=JsonConvert.DeserializeObject(数据);
foreach(对象属性数据中的var数据)
{
var buf=Convert.FromBase64String(数据);
Console.WriteLine(Encoding.UTF8.GetString(buf));
}

公共类AClass
{
公共列表sa{get;set;}
公共列表sb{get;set;}
公共字符串sz{get;set;}
公共字符串sid{get;set;}
公共字符串ti{get;set;}
public int NumberOfTokens{get;set;}
公共列表属性数据{get;set;}
}

尝试将其转换为错误提示的列表,并在调试器中检查对象。嗯……尝试找出如何使用
动态
对象看起来像是Json.NET将
字节[]转换为List@makerofthings7这没有任何意义。没有字节[][]在json数据中。是否显示序列化以生成json的类?我刚刚回滚编辑以显示服务器上有一个字节[],如您所述