我正在尝试连接到一个api,它从WCF服务(WCF服务到WCF服务)返回GZip编码的JSON.我正在使用HTTPClient连接到API,并且能够将JSON对象作为字符串返回.但是我需要能够将这些返回的数据存储在数据库中,因此我认为最好的方法是将JSON对象返回并存储在数组或字节中或沿着这些行存储.
我特别遇到的问题是GZip编码的解压缩,并且尝试了很多不同的例子,但仍然无法得到它.
下面的代码是我建立连接和获得响应的方式,这是从API返回字符串的代码.
Run Code Online (Sandbox Code Playgroud)public string getData(string foo) { string url = ""; HttpClient client = new HttpClient(); HttpResponseMessage response; string responseJsonContent; try { client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); response = client.GetAsync(url + foo).Result; responseJsonContent = response.Content.ReadAsStringAsync().Result; return responseJsonContent; } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); return ""; } }
我一直在关注一些不同的例子,比如这些StackExchange API,MSDN和一些关于stackoverflow,但我无法让任何这些对我有用.
实现这一目标的最佳方法是什么,我是否在正确的轨道上?
多谢你们.
我正在使用Ajax使用他们的API从twitter获取数据.我正在尝试使用jsonp,从我能看到和理解的东西,我认为我做的一切都是正确的(显然不是).
Run Code Online (Sandbox Code Playgroud)<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> </script> <script> $(document).ready(function () { $.ajax( { type: 'GET', datatype: 'jsonp', data: {}, crossDomain: 'true', url: "http://twitter.com/status/user_timeline/padraicb.json?count=10&callback=?", error: function(textStatus, errorThrown) { alert("error"); }, success: function(msg) { console.log(msg); } }); }); </script>
以上代码在Chrome和Firefox中都会生成错误XMLHttpRequest无法加载http://twitter.com/status/user_timeline/padraicb.json?count=10&callback= ?.请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许原点'null'访问.
从我的理解,我认为拥有&callback=?
和设置类型jsonp
将允许这成功.更重要的是,我可以看到在fiddler中返回的JSON对象,它只是没有被脚本处理.我尝试了多个API,同时出现同样的问题.
当输入地址栏时,一个这样的API也可以工作.
所以我经过广泛的搜索和寻找后,我需要一些如何设置原点*
?我认为这更像服务器端问题?
我也试过?callback?
但无济于事.
任何想法都会很棒,谢谢.
我无法确定数据库表中是否存在记录,但列表中包含的更新记录中是否存在记录.如果记录在更新列表中不存在但在数据库表中存在,那么该记录需要删除.
我可以查询表以确定它是否已被修改,如果数据库表中不存在该记录然后更新它,但确定相反的情况证明有点棘手.另一个限制是我需要结果是一个bool值为exists = true而不是exists = false,这样我就可以适当地处理删除记录了.
我这样做是为了确定数据库表中是否存在记录:
bool exists = db.table.Any(t => t.EntityID != list.EntityID)
Run Code Online (Sandbox Code Playgroud)
但似乎无法反过来管理.
列表和数据库表使用Entity Framework进行1对1映射.
如果记录存在于数据库中但不在列表中,则删除.
我有一些问题反序列化mimeKit.mimeMessage,我将其序列化为JSON字符串并存储在redis键值缓存中.
我能够使用json.NET或Jil成功地序列化和存储mimeMessage,但是当我去反序列化时,会抛出以下错误.
由json.NET抛出
无法找到用于MimeKit.Header类型的构造函数.一个类应该有一个默认的构造函数,一个带参数的构造函数或一个用JsonConstructor属性标记的构造函数.路径'标题[0].偏移',第1行,第22位.
我使用StackExchange.Redis方法stringGet获取序列化对象,然后将RedisValue传递给Json.Net; 下面的代码片段:
RedisValue result = db.StringGet(key);
MimeMessage message = new MimeMessage();
message = JsonConvert.DeserializeObject<MimeMessage>(result);
Run Code Online (Sandbox Code Playgroud)
我的理解是总是创建一个默认构造函数,这使得我很难理解,默认构造函数是否已被指定为私有,如果是这样,为什么?
我还检查了返回的JSON字符串的格式,它是正确的.
谢谢你的帮助.
我试图将一个字符串列表连接成一个用逗号分隔的单个字符串.非常简单的使用 string.Join
,我面临的问题是如何使用属性这样做?
public class JsonObject
{
public string EntityID { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string Address3 { get; set; }
public string Address3 { get; set; }
public List<string> Category = ??
}
Run Code Online (Sandbox Code Playgroud)
我想获取一个json对象并将其插入到数据库中.类别是我可以处理的数组List<string>
.如何将此字符串列表连接成一个字符串,然后将其返回到字符串类别?我假设你必须使用一个单独的类来处理它,但除此之外我不知道怎么回事.
Json对象看起来像这样:
"EntityID":"foo",
"Categories": [ "Category1", "Category2", "Category3"]
Run Code Online (Sandbox Code Playgroud)
我希望将这些类别(1,2,3)连接成单个字符串即
public string Category;
Run Code Online (Sandbox Code Playgroud)