zoukankan      html  css  js  c++  java
  • UE4 WCF RestFul 服务器 读取JSON 数据并解析 简单实例

    Note:如果通过Txt读取的JsonString,如果TXT 不是ANSI编码的话,会报JsonArrayStringToUStruct  Unable to parse。(4.13出,不知道是不是我电脑的个例)

     Build.cs 包含 JsonUtilities 模块。

    UE4:

    bool UWgtCpp_BaseMain::Http_readSortList() 
    {
        auto temp_request = UNetAPI::createRequst(TEXT("http://localhost:59754/StudentService.svc/GetStudentList"), TEXT("GET"));
    
        temp_request->OnProcessRequestComplete().BindUObject(this, &UWgtCpp_BaseMain::OnArrSortListLoaded);
        temp_request->ProcessRequest();
    
        return true;
    }
    
    void UWgtCpp_BaseMain::OnArrSortListLoaded(FHttpRequestPtr _request, FHttpResponsePtr _response, bool bWasSuccessful)
    {
        UE_LOG(LogTemp, Warning, TEXT("OnArrSortListLoaded"));
        if (bWasSuccessful)
        {
            switch (_response->GetResponseCode()) 
            {
            case 200:
                TArray<FDataCpp_BaseSortItem> arr;
                
                FJsonObjectConverter::JsonArrayStringToUStruct<FDataCpp_BaseSortItem>(_response->GetContentAsString(), &arr, 0,0);
                
                for (auto item : arr) 
                {
                    auto temp_str = FString::Printf(TEXT("%d , %s"),item.id , item.Name);
                    GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Cyan, item.Name);
                }
    
                break;
            }
        }
    }

     

    WCF:

            [OperationContract]
            [WebInvoke
                (
                Method = "GET",
                RequestFormat = WebMessageFormat.Json,
                ResponseFormat = WebMessageFormat.Json,
                UriTemplate = "GetStudentList"
                )
            ]
            IList<Student> GetStudentList();

    *.JSON

    [{"Id":1,"Name":"sad"},{"Id":2,"Name":"ttt"},{"Id":3,"Name":"tretre"},{"Id":4,"Name":"terter"},{"Id":5,"Name":"treter"},{"Id":6,"Name":"fsdfds"},{"Id":7,"Name":"cccc"},{"Id":8,"Name":"vvvv"},{"Id":9,"Name":"bbb"},{"Id":10,"Name":"nnn"},{"Id":11,"Name":"mm"},{"Id":12,"Name":"qqq"},{"Id":13,"Name":"www"},{"Id":14,"Name":"eee"},{"Id":15,"Name":"rrr"},{"Id":16,"Name":"ttt"},{"Id":17,"Name":"yyy"},{"Id":18,"Name":"uuu"},{"Id":19,"Name":"iii"},{"Id":20,"Name":"ooo"},{"Id":21,"Name":"ppp"},{"Id":22,"Name":"aaa"},{"Id":23,"Name":"sss"},{"Id":24,"Name":"ddd"},{"Id":25,"Name":"fff"}]
  • 相关阅读:
    C# 设计模式-抽象工厂模式
    C# 设计模式-工厂方法模式
    C# 设计模式-简单工厂模式
    C# 设计原则-迪米特法则(最少知识原则)
    C# 设计原则-接口隔离原则
    阻止右击事件并更改为自定义导航栏;
    今日头条滚动新闻版块特效
    抓包工具
    查看页面加载速度
    插件那点事
  • 原文地址:https://www.cnblogs.com/linqing/p/5132834.html
Copyright © 2011-2022 走看看