vs2010 학습Silverlight 학습노트(15): 데이터와 통신의 JSON
8564 단어 silverlight
한동안 공부를 안 했으니 계속해야겠다.꼭 쓰고 보내는 건 아니고 마지막에 같이 보낼 수도 있어요.이 JSON은 제가 예전에 잘 몰랐는데 웹 전송의 한 형식인 줄만 알았어요.오늘은 JSON이 무엇을 하는지 초보적으로 알아보고, 다 쓴 후에 W를 보도록 하겠습니다.
3C
중JSON 자료입니다.
내용:
두 개의 솔리드, Post 클래스, Blog 클래스를 작성합니다.이전과 다른 것은sl에도 같은 두 종류가 있다는 것이다.
Post.cs
public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public string Author { get; set; }
}
Blog.cs
public class Blog
{
public List<Post> Posts { get; set; }
}
새 HttpHandler는 sl에 JSON 데이터를 전송하는 데 사용됩니다.
public class BlogHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
//context.Response.Write("Hello World");
List<Post> posts = new List<Post>()
{
new Post{Id=1,Title="
1a
",Author="li"},
new Post{Id=2,Title="
2a
",Author="li"},
new Post{Id=3,Title="
3a
",Author="li"},
new Post{Id=4,Title="
4a
",Author="li"},
new Post{Id=5,Title="
5a
",Author="li"}
};
Blog blog = new Blog();
blog.Posts = posts;
context.Response.Write(JavaScriptConvert.SerializeObject(blog));
}
public bool IsReusable
{
get
{
return false;
}
}
}
:context.Response.Write(JavaScriptConvert.SerializeObject(blog));
사용된 JavaScriptConvert.SerializeObject는 JSON에서 왔으며 sl에 인용을 추가하면 System이 있습니다.Json;그런데 이 WEB에는 없어요. 여기 쓰는 건요.
이 씨
선생님 소스의 Dll 파일 참조.관심 있는 사람은 Json에게 할 수 있다.net 알아보기.
이 때 http://localhost:8081/BlogHandler.ashx를 볼 수 있지만 브라우저가 오류를 표시합니다: 파일 맨 위에 올바르지 않습니다.아래 댓글에서도 이 오류가 발견됐지만 원인과 방법은 없었다.우선 그를 상관하지 않고 남은 부분을 해라.
레이아웃 인터페이스:
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"d:DesignWidth="400"Loaded="UserControl_Loaded">
Margin="20 0 0 0"HorizontalAlignment="Left">
Margin="20 0 00">
MainPage.cs 인터페이스: 참조 시스템을 추가해야 합니다.Net;,System.ServiceModel.Web;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Net;
using System.IO;
using System.Runtime.Serialization.Json;
using System.Threading;
namespace SLDemo16JOSN
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
Uri endpoint = newUri("http://localhost:8081/BlogHandler.ashx");
WebRequest request = WebRequest.Create(endpoint);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.BeginGetResponse(new AsyncCallback(ResponseReady), request);
}
void ResponseReady(IAsyncResult asyncResult)
{
WebRequest request = asyncResult.AsyncState as WebRequest;
WebResponse response = request.EndGetResponse(asyncResult);
using (Stream responseStream = response.GetResponseStream())
{
DataContractJsonSerializerjsonSerializer =
newDataContractJsonSerializer(typeof(Blog));
Blog blog =jsonSerializer.ReadObject(responseStream) as Blog;
//Posts.ItemsSource = blog.Posts;
//new Thread(() => {Posts.Dispatcher.BeginInvoke(() => Posts.ItemsSource = blog.Posts);}).Start();
Posts.Dispatcher.BeginInvoke(()=> Posts.ItemsSource = blog.Posts);
}
}
}
}
Handler가 브라우저에서 오류를 일으켰기 때문일 수도 있습니다.sl 페이지 데이터에 값을 부여할 때 원래대로 사용합니다.
//Posts.ItemsSource = blog.Posts;데이터가 비어 있는 상황이 발생합니다.
구체적인 원인은 잘 모르겠지만, 어떤 사람은 다음과 같은 두 가지 해결 방법을 제시했다.
new Thread(() => {Posts.Dispatcher.BeginInvoke(() => Posts.ItemsSource = blog.Posts);}).Start();
또는 Posts.Dispatcher.BeginInvoke(() => Posts.ItemsSource =blog.Posts);
요약:
이 JSON은 이전에 접촉한 적이 없어서 앞으로도 많이 접촉하지 않을 것이다.이것은 주로 이 편의 모든 코드를 어떻게 써야 하는지 기억하는 것이 아니라 나중에 만났을 때 저는 JSON으로 어떻게 서열화되고 어떻게 반서열화되어야 하는지 알 뿐입니다. 구체적인 코드는 인터넷에서 찾아볼 수 있습니다.이미 몇 편의 데이터 통신 부분을 배웠는데 사실 많은 것들이 차이가 많지 않다. 서버 쪽이handler가 아니면 서비스이기 때문에 데이터는 먼저 봉인하여 서열화한 다음에 반서열화 디스플레이를 해야 한다.하지만 똑똑하지 않은 내 머리로 모든 사용 방법을 기억하는 것은 어렵지만 그들의 차이점과 관건적인 특징을 기억하는 것은 가능하다고 생각한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Silverlight animation performanceAnimation performance can be improved with several configurations: Desired Frame Rate Configure in the WEB project: Hard...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.